SQL +西里尔字母支持+参数化查询+多项选择

本文关键字:查询 选择 参数 SQL 支持 | 更新日期: 2023-09-27 18:07:33

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

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匹配的所有书籍。

SQL +西里尔字母支持+参数化查询+多项选择

由于我不使用。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"。

您可以使用LIKE操作符,例如

SELECT * FROM Books WHERE BookName LIKE @Title

要给parameter赋值,只需在string

后面加上"%"
cmd.Parameters.AddWithValue("@Title", UserInput + "%");

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

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

System.String已经是Unicode了

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