我有一个插件查询,可以在C#中针对SQL Server数据库执行。
我要插入的列的类型为nvarchar。
我插入该列的数据是非英语的。
使用AddWithValue将非英语数据传递给服务器是否足够?像这个例子:
string dogName = "עברית";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand("INSERT INTO Dogs1(Name) VALUES @Name", connection))
{
command.Parameters.AddWithValue("Name", dogName);
command.ExecuteNonQuery();
}
}
或者我必须使用N前缀来声明它是unicode吗?就像它所说here。
答案 0 :(得分:5)
如果我正确理解了这个问题,您可以将SqlCommand参数显式设置为特定的数据类型。您可以将其设置为nvarchar,如以下链接所示:http://msdn.microsoft.com/en-us/library/yy6y35y8.aspx
以下代码段直接来自MSDN:
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = "@CategoryName";
parameter.SqlDbType = SqlDbType.NVarChar;
parameter.Direction = ParameterDirection.Input;
parameter.Value = categoryName;
这使用了一个显式创建的SqlParameter实例,但它通过索引SqlCommand实例的SqlParameterCollection来实现同样的想法。
答案 1 :(得分:4)
我认为底部的链接只是在谈论SQL本身的值 。
据我所知,您获得的代码应该绝对正确 - 否则就无法指定Unicode文本。
当然,这可能值得对此进行验证 - 但如果它不起作用我会感到非常惊讶。