我正在尝试使用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。
有没有人有任何想法?
答案 0 :(得分:0)
虽然我强烈质疑数据库的设计,但您可以通过将=
更改为LIKE