问题是,当用户将non-Latin word插入数据库时,如果排序规则未设置为alphabet,则该单词类似于'?????‘,但如果用户插入像N'word'这样单词,或者我选择像N'word'这样的单词,则没有问题。
我在C#端使用hastable function,那么有没有自动使用N‘’word‘格式的解决方案,或者每次调用函数时,我必须在文本前使用N?
顺便说一下,我已经在使用NVARCHAR格式了。
简单的提问方式;
我不想每次从数据库中选择项目时都使用N'word'格式。
是否有任何触发器、存储过程或函数用于在我选择的文本前自动添加N。
发布于 2015-09-03 15:04:00
你根本不应该使用N'word'格式,你应该使用参数。当您将值连接到一个字符串中以创建一个查询时,它很容易受到SQL注入攻击,除非您管理以正确地转义所有输入。
将参数放入查询,并将值添加到命令的Parameters集合中。示例:
string query = "select Id from Persons where Name = @Name";
using (SqlCommand cmd = new SqlCommand(query, connection)) {
cmd.Parameters.Add('@Name', SqlDbType.NVarChar, 50).value = name;
using (SqlDataReader reader = cmd.ExecuteReader()) {
while (reader.Read()) {
...
}
}
}对参数使用unicode类型(如NVarChar )可确保参数值以unicode格式发送,相当于N'word'格式。
发布于 2015-09-03 14:53:46
为什么不使用某种ORM呢?Dapper是一个轻量级的ORM:https://github.com/StackExchange/dapper-dot-net
如果这就是您遇到的问题,它将解决您的参数传递问题
https://stackoverflow.com/questions/32368635
复制相似问题