0

我正在使用 ADODB interop DLL Version :6.0.0.0 连接任何类型的数据库。

CommandTimeout 为 3 秒 使用超时为 3 秒的命令对象打开记录集。

使用具有大量数据的 Oracle 数据库,当我输入选择查询时,它不会超时。

如何使执行查询超时?

我也尝试将命令超时设置为 1 秒,但仍然没有超时。

将连接超时设置为 3 秒(我知道这与命令超时不同,但仍然尝试过)

**在 MSSQl 数据库中,如果我在存储过程中插入 10 条缺少记录并在此之后进行选择查询,它实际上在执行过程时会超时,但如果我在过程中也只有选择查询,它不会超时。

public DataTable ExecuteQuery(string commandText, int timeout = 3) {
    if (connection.State.Equals(connected))
    {
        var command = createCommand(commandText, CommandTypeEnum.adCmdText, 3);                     

        var recordset = createRecordset();  recordset.Open(command);

        command = null;     return dataTable; 
    } }

private Command createCommand(string commandText, CommandTypeEnum  commandType, int timeout = 3) {
    var command = new ADODB.Command
    {
        ActiveConnection = connection,
        CommandText = commandText,
        CommandType = commandType,
        CommandTimeout = timeout
    };

    return command; }

private Recordset createRecordset() {
    return new Recordset
    {
        CursorType = CursorTypeEnum.adOpenStatic,
        CursorLocation = CursorLocationEnum.adUseClient,
        LockType = LockTypeEnum.adLockReadOnly,
    }; }

当查询执行超过 3 秒时,我预计会出现超时错误。

4

0 回答 0