很抱歉,如果这个问题是重复的并且也是非常简单的问题。但是我无法解决我的查询问题。我是 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”解决了这个问题。这一次就像我说的,我卡在了准备好的语句问题上。
我做错了什么吗?请帮忙。
最佳答案
N
部分是文字 的前缀。你不应该那样做。我会期望这个工作:
commandString = "select * from table where att=@param";
command.Parameters.Add("@param", SqlDbType.NVarChar).Value = "ğasd";
请注意我指定参数的不同方式,明确地使其成为 NVarChar
参数。我本来希望无论如何都会使用正确的参数类型,但也许不会...
关于c# - 通过使用准备语句在 C# 中查询 Utf-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21757262/