Unicode SQL 查询 W/ 参数而不是 N 前缀
Posted
技术标签:
【中文标题】Unicode SQL 查询 W/ 参数而不是 N 前缀【英文标题】:Unicode SQL Query W/ Parameter instead N Prefix 【发布时间】:2011-11-24 18:58:20 【问题描述】:我有一个插入查询要在 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。
【问题讨论】:
【参考方案1】:如果我对问题的理解正确,您可以将 SqlCommand 参数显式设置为特定数据类型。您可以将其设置为 nvarchar,如以下链接所示:http://msdn.microsoft.com/en-us/library/yy6y35y8.aspx
下面这段代码 sn-p 直接取自 MSDN:
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = "@CategoryName";
parameter.SqlDbType = SqlDbType.NVarChar;
parameter.Direction = ParameterDirection.Input;
parameter.Value = categoryName;
这使用了一个显式创建的SqlParameter实例,但是通过索引SqlCommand实例的SqlParameterCollection也是同样的思路。
【讨论】:
很高兴知道,但我必须为每个参数都麻烦吗?所有这些额外的工作都会降低代码的可读性,如果可以的话,我真的很想不用它。【参考方案2】:我相信底部的链接实际上只是在谈论SQL 本身中的值。
据我所知,您获得的代码应该绝对没问题 - 否则将无法指定 Unicode 文本。
当然,这可能值得验证 - 但如果它不起作用,我会感到非常惊讶。
【讨论】:
请看我的回答。我同意它可能会作为string
隐含地使用 nvarchar,但有一种方法可以显式调用数据类型。以上是关于Unicode SQL 查询 W/ 参数而不是 N 前缀的主要内容,如果未能解决你的问题,请参考以下文章
使用 SC 排序规则的 SQL Server Unicode 查询
SQL Server再学习——varcharnvarcharchar的区别