gpt4 book ai didi

c# - 在 DBCommand 中添加参数导致超时

转载 作者:行者123 更新时间:2023-11-30 17:52:59 24 4
gpt4 key购买 nike

我有一个参数添加函数,如下所示:

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();

我收到超时异常。但是如果我运行相同的命令 Like

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

我得到了我想要的输出...任何人都可以帮我找出我的问题在哪里吗? conn 这里是一个SqlConnection。谢谢。

最佳答案

您声明该列是 varchar(50),但您使用的是 DbType.String;但是,DbType.Stringnvarchar(...) - 即 unicode。现在,有时服务器会以“正确的方式”进行转换(此处“正确”的意思是:不会降低性能的方式),但有时它会做出替代选择(例如,它可能会决定它不能使用索引并进行表扫描,甚至更糟 - 它可能决定依次转换每一行以进行比较)。那么,最好的做法是首先指定正确的数据类型:使用 DbType.AnsiStringDbType.StringDbType.AnsiString 没有任何“错误” - 只要它们被正确地用于表示 nvarcharvarchar 分别。

关于c# - 在 DBCommand 中添加参数导致超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17923301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com