以下代码会生成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();
我不明白为什么,有人能开导我吗?
答案 0 :(得分:0)
您能看一下数据库执行的SQL语句吗?
您可能会看到参数使用的类型有所不同。我相信AddParamWithValue方法不会为参数使用正确的类型。
然后,DBMS可能必须将值转换回正确的类型。在这种情况下,某些DBMS将无法使用索引查找,这将导致查询运行时间更长,因此超时。