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 に答える