簡體   English   中英

參數在DBCommand中添加導致超時

[英]Parameter Add Causing Timeout in DBCommand

我有一個像bellow一樣的參數添加功能:

public static void AddParameter(DbCommand comm, string ParamName, Object objValue, DbType Paramtype,int paramSize)
{
      //comm.Parameters.Clear();
      DbParameter param = comm.CreateParameter();
      param.ParameterName = ParamName;
      param.DbType = Paramtype;
      param.Size = paramSize;
      param.Direction = ParameterDirection.Input;
      param.Value = objValue;
      comm.Parameters.Add(param);
}

現在何時執行以下操作:

conn.Open();
DbCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT * FROM tableName WHERE MemberID=@MemberID";
AddParameter(cmd, "@MemberID", "00000970-b1fd-49ad-89fc-1de066c0076c", DbType.String, 50);
cmd.ExecuteReader();

我得到超時異常。 但是,如果我運行相同的命令喜歡

SELECT * FROM tableName WHERE MemberID='00000970-b1fd-49ad-89fc-1de066c0076c'

我得到了我想要的輸出......任何人都可以幫我找出問題所在? conn這里是一個SqlConnection。 謝謝。

您聲明該列是varchar(50) ,但您使用的是DbType.String ; 但是, DbType.Stringnvarchar(...) - 即unicode。 現在,有時服務器會以“正確的方式”進行轉換(這里的“右”意味着:不會破壞性能的轉換),但有時它會做出替代選擇(例如,它可能會決定它不能使用索引並進行表掃描,甚至更糟 - 它可能決定依次轉換每一行進行比較)。 那么,最好的辦法是首先指定正確的數據類型:使用DbType.AnsiString DbType.StringDbType.AnsiString沒有任何“錯誤” - 只要它們分別正確地用於表示nvarcharvarchar

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM