Unicode SQL查询W /参数而不是N前缀

时间:2011-09-25 20:28:00

标签: c# sql sql-server unicode

我有一个插件查询,可以在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

2 个答案:

答案 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文本。

当然,这可能值得对此进行验证 - 但如果它不起作用我会感到非常惊讶。