C# SQL+;西里尔语支持+;参数化查询&x2B;选择题

C# SQL+;西里尔语支持+;参数化查询&x2B;选择题,c#,sql-server,tsql,unicode,ado.net,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"

到目前为止,我有以下代码:

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

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

书籍的类型是什么。BookName
?它是NVARCHAR(x)吗

System.String
已经是Unicode


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

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

SELECT * FROM Books WHERE BookName LIKE @Title
若要为参数赋值,只需在字符串末尾附加一个“%”

cmd.Parameters.AddWithValue("@Title", UserInput + "%");

这是没有测试,因为我不使用.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