C# 如何在参数化SQL查询中避免无效的UTF8字节序列?
我有一个PostgreSQL数据库,它使用UTF8编码。我相信这是默认编码 我有一个GUI应用程序,它发出一个典型的C# 如何在参数化SQL查询中避免无效的UTF8字节序列?,c#,postgresql,encoding,utf-8,C#,Postgresql,Encoding,Utf 8,我有一个PostgreSQL数据库,它使用UTF8编码。我相信这是默认编码 我有一个GUI应用程序,它发出一个典型的SELECT查询,并带有WHERE子句。查询是参数化的,参数的内容通常由最终用户粘贴。该值不是从文本文件等中读取的,而是粘贴到备忘录编辑中 这里是查询 cmd.CommandText = @"SELECT history_id, emplid, displayname FROM ""MAX_HISTORY_IDS""
SELECT
查询,并带有WHERE
子句。查询是参数化的,参数的内容通常由最终用户粘贴。该值不是从文本文件等中读取的,而是粘贴到备忘录编辑中
这里是查询
cmd.CommandText = @"SELECT history_id, emplid, displayname
FROM ""MAX_HISTORY_IDS""
WHERE searchname ILIKE :searchname";
cmd.Parameters.Add("searchname", PgSqlType.VarChar).Value = "Sievert,Jürgen";
在上面的代码中,参数值Sievert,Jürgen,将是从备忘录编辑框或文本输入等中解析出来的变量。该名称也是导致此查询导致Postgre的无效UTF8字节序列错误的名称的真实示例
现在,我假设数据库上的UTF8编码是很好的,并且对于此类内容来说是相当标准的。这里怎么了?此文本参数的编码是否不是UTF8?我如何才能让这个查询工作,或者数据库上的编码不合适吗?我找到了答案。我正在使用DotConnect PostgreSQL客户端库。在连接字符串中,我只需要添加
Unicode=True
。这似乎使一切工作