2008-11-19 5 views
0

Я использую SqlDataSource для заполнения моего GridView, потому что эти два, кажется, так тесно связаны друг с другом. Так как эта сетка показывает результаты поиска, у меня динамический строка SQL записывается в моем коде, который ссылается на параметры я прохожу в, например, как показано ниже:Как заставить SqlDataSource использовать параметры varchar?

sdsResults.SelectParameters.Add("CodeID", TypeCode.String, strCodeID) 

Моя проблема заключается в том, что поле CodeID это поле VARCHAR. Как вы могли убедиться, переход в поле nvarchar для оценки против поля varchar может быть очень вредным для производительности sql. Тем не менее, SelectParameters.Add принимает только типы TypeCode, которые, похоже, дают мне только unicode TypeCode.String в качестве моего жизнеспособного варианта.

Как заставить свой SqlDataSource использовать varchars? Я не могу изменить тип данных на данный момент - это главный ключ большого 10-летнего приложения, и, честно говоря, varchar подходит для приложения.

ответ

1

BTW, мое обходное решение прямо сейчас позволяет SqlDataSource проходить в параметре как nvarchar. Моя первая строка в моем SQL затем преобразует этот параметр nvarchar явно в переменную varchar и вместо этого использует эту переменную varchar через мой скрипт.

Но это кажется глупым.

0

Может быть, это будет работать:

using System.Data; 

sdsResults.SelectParameters.Add("CodeID", SqlDbType.VarChar, strCodeID); 
0

Нет, к сожалению, это требует, чтобы System.TypeCode пары передаются в Использовании SqlDbType заканчивается в ошибке компиляции..

Смежные вопросы