SQL + поддержка кириллицы + параметризованный запрос + множественный выбор - PullRequest
2 голосов
/ 02 сентября 2011

У меня пока есть этот код:

string userInput = Textbox1.text;
string query = "SELECT * FROM Books WHERE BookName = @Title";
SqlConnection con = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand(query, con); 
cmd.Parameters.AddWithValue("@Title", userInput);

и мне нужен этот запрос для поддержки символов кириллицы, и используйте N '' для поддержки кириллицы:

SELECT * FROM Books Where BookName = N'UserInput%'  

Мне тоже нужен%, потому что я хочу найти все книги, которые соответствуют UserInput.

Ответы [ 3 ]

3 голосов
/ 02 сентября 2011

Это не проверено, так как я не использую .NET, но, вероятно, я бы сделал это следующим образом.

string UserInput = Textbox1.text;
string query = "SELECT * FROM Books WHERE BookName like @Title";
SqlConnection con = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand(query, con); 
cmd.Parameters.AddWithValue("@Title", UserInput+"%");

Измените = на like в запросе, добавьте %введите пользовательский ввод и убедитесь, что тип данных для BookName в таблице Books имеет значение nvarchar.

2 голосов
/ 02 сентября 2011

Вы можете использовать оператор LIKE, например

SELECT * FROM Books WHERE BookName LIKE @Title

А чтобы присвоить параметру значение, вы можете просто добавить «%» в конец строки

cmd.Parameters.AddWithValue("@Title", UserInput + "%");
1 голос
/ 02 сентября 2011

Вам нужна поддержка Unicode, а не только поддержка кириллицы.

Какой тип Books.BookName?NVARCHAR(x)?

System.String - это уже Unicode.

Вы можете попытаться указать тип ввода вручную: cmd.Parameters.Add("@Title", SqlDbType.NVarChar, x)

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