Я пытаюсь сделать простой запрос из таблицы, используя ODBC, c # и Sql Server 2000/2005/2008
С учетом следующей таблицы:
create table users (
name nvarchar(50)
)
Если я запускаюследующее:
insert into users select 'Administrator'
У меня должна быть 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());
}
Это дает следующую ошибку:
Необработанное исключение: System.Data.Odbc.OdbcException: ERROR [42000][Microsoft] [Собственный клиент SQL Server 10.0] [SQL Server] Типы данных nvarchar и ntext несовместимы в операторе равенства.
Если изменить DbType на DbType.StringFixedLength, он будет работать нормальноэтот же код работает нормально при использовании родного драйвера.
Единственный способ, которым это будет работать, - это если строка меньше 2000. Не может быть 2000.
У кого-нибудь есть идеи?