ODBC参数最大长度1999年的时候应该是4000
本文关键字:候应该 4000 1999年 参数 ODBC | 更新日期: 2023-09-27 18:18:25
我正在尝试从使用ODBC, c#和Sql Server 2000/2005/2008表做一个简单的查询
给定下表:
create table users (
name nvarchar(50)
)
如果我运行以下命令:
insert into users select 'Administrator'
我应该在数据库中有一个记录,有50个a。然后我尝试运行下面的select from c#.
using (var conn = new OdbcConnection(connstr))
{
conn.Open();
var comm = conn.CreateCommand();
comm.CommandText = "select name from users where name = ?";
var par = comm.CreateParameter();
par.Value = "Administrator";
par.Size = 2000; //So that query plan is cached
comm.Parameters.Add(par);
Console.WriteLine(comm.ExecuteScalar());
}
这会产生以下错误:
未处理异常:System.Data.Odbc.OdbcException: ERROR [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server] = =操作符中的数据类型nvarchar和ntext不兼容
如果我将DbType更改为DbType。它工作得很好,如果使用本机驱动程序,同样的代码工作得很好。
唯一可行的方法是字符串小于2000。不可能是2000。
有人有什么想法吗?
虽然我强烈质疑您的数据库设计,但您可以通过将=
更改为LIKE
来快速解决此问题