2011-12-20 59 views
0

我試圖做一個表使用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

有沒有人有什麼想法?

+1

SQL Server版本的? ... – 2011-12-20 01:42:45

+1

您確定該字段未設置爲「TEXT」嗎?聽起來像'varchar(max)'是你想要的。 – 2011-12-20 01:50:08

+0

您是否看到上面的表格定義?這是一個回購。 – Schotime 2011-12-20 02:33:11

回答

0

雖然我強烈質疑你的數據庫的設計,你可以擺脫這個問題快速和骯髒通過改變=LIKE

+0

你...這確實有用,但並不是真的可以接受 – Schotime 2011-12-20 12:10:27