SQL + Cyrillic支持+参数化查询+多选

时间:2011-09-02 07:03:50

标签: c# sql-server tsql unicode ado.net

到目前为止我有这个代码:

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 个答案:

答案 0 :(得分:3)

由于我不使用.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,将%添加到用户输入,并确保表Books中BookName的数据类型为nvarchar

答案 1 :(得分:2)

您可以使用LIKE运算符,例如

SELECT * FROM Books WHERE BookName LIKE @Title

要为参数赋值,您只需在字符串

的末尾添加“%”即可
cmd.Parameters.AddWithValue("@Title", UserInput + "%");

答案 2 :(得分:1)

您需要Unicode支持,而不仅仅是西里尔语支持。

Books.BookName的类型是什么?是NVARCHAR(x)吗?

System.String已经是Unicode。

您可以尝试手动指定输入类型:cmd.Parameters.Add("@Title", SqlDbType.NVarChar, x)