在c#端为SQL设置非拉丁字母
本文关键字:拉丁字母 设置 SQL 端为 | 更新日期: 2023-09-27 18:11:09
问题是当用户插入non-Latin
单词到数据库时,如果排序不设置为alphabet
,单词就像' ?????
',但如果用户插入像N'word'
这样的单词或我像N'word'
一样选择它,则没有问题。
我在C#
侧使用hastable function
,所以是否有任何解决方案可以自动使用N'word'格式,或者每次调用函数时必须在文本之前使用N ?
我已经使用NVARCHAR
格式了。
问的简单方法;
我不想每次从数据库中选择项目时都使用N'word'
格式。
是否有任何触发器、存储过程或函数用于在我选择的文本之前自动添加N ?
你根本不应该使用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'
格式。
为什么不使用某种ORM呢?Dapper是一个轻量级ORM:https://github.com/StackExchange/dapper-dot-net
如果这是你遇到的麻烦,它将解决你的问题参数传递