ODBC参数最大长度1999时应为4000

时间:2011-12-20 01:41:00

标签: c# sql-server database odbc

我正在尝试使用ODBC,c#和Sql Server 2000/2005/2008从表中进行简单查询

鉴于下表:

create table users ( 
    name nvarchar(50)
) 

如果我运行以下内容:

insert into users select 'Administrator'

我应该在数据库中有50条记录的1条记录。 然后我尝试从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.StringFixedLength它工作正常,如果使用本机驱动程序,相同的代码工作正常。

唯一可行的方法是,如果字符串小于2000.不能是2000。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

虽然我强烈质疑数据库的设计,但您可以通过将=更改为LIKE

来快速解决此问题