首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#端为SQL设置非拉丁字母

在C#端为SQL设置非拉丁字母
EN

Stack Overflow用户
提问于 2015-09-03 14:42:21
回答 2查看 321关注 0票数 0

问题是,当用户将non-Latin word插入数据库时,如果排序规则未设置为alphabet,则该单词类似于'?????‘,但如果用户插入像N'word'这样单词,或者我选择像N'word'这样的单词,则没有问题。

我在C#端使用hastable function,那么有没有自动使用N‘’word‘格式的解决方案,或者每次调用函数时,我必须在文本前使用N?

顺便说一下,我已经在使用NVARCHAR格式了。

简单的提问方式;

我不想每次从数据库中选择项目时都使用N'word'格式。

是否有任何触发器、存储过程或函数用于在我选择的文本前自动添加N。

EN

回答 2

Stack Overflow用户

发布于 2015-09-03 15:04:00

你根本不应该使用N'word'格式,你应该使用参数。当您将值连接到一个字符串中以创建一个查询时,它很容易受到SQL注入攻击,除非您管理以正确地转义所有输入。

将参数放入查询,并将值添加到命令的Parameters集合中。示例:

代码语言:javascript
复制
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'格式。

票数 2
EN

Stack Overflow用户

发布于 2015-09-03 14:53:46

为什么不使用某种ORM呢?Dapper是一个轻量级的ORM:https://github.com/StackExchange/dapper-dot-net

如果这就是您遇到的问题,它将解决您的参数传递问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32368635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档