Дефис в выражении выбора SQL - PullRequest
2 голосов
/ 03 мая 2011

Это мой очень простой оператор выбора:

select * from ProductDimensions where Item='100-1000'

При вводе в SSMS он запрашивает штраф и возвращает результаты.При запуске через мою программу в VS ничего не возвращает.Элемент без дефиса возвращается в порядке.Есть ли какой-то особый синтаксис, необходимый для того, чтобы это работало из моего кода C #?

Код C #:

adapter = new SqlDataAdapter("select * from ProductDimensions where Item='100-1000'", conn);
adapter.Fill(dataSet);

Как я уже сказал, если я введу число без дефиса, например '1000 'работает нормально.

1 Ответ

5 голосов
/ 03 мая 2011

Попробуйте вместо этого использовать параметризованную строку SQL, и вы избежите таких проблем, как такие, как внедрение SQL:

adapter = new SqlDataAdapter("select * from ProductDimensions where Item=@Item";
adapter.Parameters.Add("@Item", SqlDbType.NChar, 15, "100-1000");

(возможно, вам придется настроить SqlDbType и длину)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...