我試圖做一個表使用ODBC,C#和SQL Server 2000/2005/2008ODBC參數最大長度爲1999年,當時應該是4000
假設表格如下一個簡單的查詢:
create table users (
name nvarchar(50)
)
如果我運行以下命令:
insert into users select 'Administrator'
我應該在DB 1個紀錄50分的。 然後我嘗試從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());
}
這提供了以下錯誤:
Unhandled Exception: System.Data.Odbc.OdbcException: ERROR [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]The data types nvarchar and ntext are incompatible in the equal to operator.
如果我改變將DbType DbType.StringFixedLength它工作正常,如果使用本機驅動程序相同的代碼工作正常。
這將工作的唯一方法是,如果字符串小於2000不能爲2000
有沒有人有什麼想法?
SQL Server版本的? ... – 2011-12-20 01:42:45
您確定該字段未設置爲「TEXT」嗎?聽起來像'varchar(max)'是你想要的。 – 2011-12-20 01:50:08
您是否看到上面的表格定義?這是一個回購。 – Schotime 2011-12-20 02:33:11