0

下面的代码产生一个System.Data.SqlClient.SqlException: Timeout expired.

const string sqlStmt = @"SELECT * 
                         FROM CUSTOMER_INFO 
                         WHERE CUSTOMER_NO = @CUSTOMER_NO;";

SqlCommand command = new SqlCommand(sqlStmt, connection);
command.Parameters.AddWithValue("@CUSTOMER_NO", txtAccountNo.Text.Trim().ToUpper());

但这不会超时...

const string sqlStmt = @"SELECT * 
                         FROM CUSTOMER_INFO 
                         WHERE CUSTOMER_NO = @CUSTOMER_NO;";

SqlCommand command = new SqlCommand(sqlStmt, connection);            
command.Parameters.Add("@CUSTOMER_NO", SqlDbType.VarChar, 25).Value = txtAccountNo.Text.Trim().ToUpper();

不明白为什么,有大神能指教一下吗?

4

1 回答 1

0

你能看一下数据库执行的 SQL 语句吗?

您可能会看到参数使用的类型有所不同。我相信 AddParamWithValue 方法不会为参数使用正确的类型。

然后,DBMS 可能必须将值转换回正确的类型。在这种情况下,某些 DBMS 将无法使用索引查找,这将导致运行时间更长的查询,从而导致超时。

于 2013-01-10T12:51:55.320 回答