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。

有人有什么想法吗?

ODBC参数最大长度1999年的时候应该是4000

虽然我强烈质疑您的数据库设计,但您可以通过将=更改为LIKE来快速解决此问题