【问题标题】:Querying Utf-8 with C# by Using Prepared StatementC# 使用 Prepared 语句查询 Utf-8
【发布时间】:2014-02-13 14:39:21
【问题描述】:

对不起,如果这个问题是重复的,也是非常简单的问题。但是我无法解决我的查询问题。我是 C# 查询的新手。我需要像“select * from table where att=N'ğasd'”这样的查询。我必须使用N,否则不匹配。

我想使用准备好的语句,但是当我执行以下操作时:

commandString = "select * from table where att=N@param;";
command.Parameters.AddWithValue("@param", "ğasd");

它给出“无效的列名'N@param'”。

我的属性是 nvarchar(50)。还有一件有趣的事。像 att2 这样的另一个属性也是 nvarchar(50) 并且我的数据库的排序规则是“SQL_Latin1_General_CP1_CI_AS”,但 att2='ğasd' 工作正常。我通过添加“N”解决了这个问题。这次就像我说的,我坚持准备好的陈述问题。

我做错了吗?请帮忙。

【问题讨论】:

    标签: c# mysql utf-8 prepared-statement


    【解决方案1】:

    N 部分是 文字 的前缀。你不应该这样做。我会期望这个工作:

    commandString = "select * from table where att=@param";
    command.Parameters.Add("@param", SqlDbType.NVarChar).Value = "ğasd";
    

    注意我指定参数的不同方式,明确地将其设为NVarChar 参数。我希望无论如何都会使用正确的参数类型,但也许不会......

    【讨论】:

      猜你喜欢
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      相关资源
      最近更新 更多