我正在使用 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 秒时,我预计会出现超时错误。