OleDbCommand and Unicode Char

本文关键字:Char Unicode and OleDbCommand | 更新日期: 2023-09-27 18:10:44

我有一个使用OleDbCommand运行大量查询的应用程序。每个查询都是纯SQL文本,该命令不使用参数。

现在,应用程序应该支持中文字符,我不想通过在字符串前面添加N字符来更改每个查询。

我正在尝试做这样的事情,但它不工作:

        OleDbCommand command = new OleDbCommand("?", connect);
        command.CommandType = CommandType.Text;
        command.Parameters.AddWithValue("query", qry);
        OleDbDataAdapter da = new OleDbDataAdapter(command);

其中qry是要执行的查询,每个字符串前面没有N字符。

我真的不想改变每一个查询,这将是一个烂摊子。

你有解决办法吗?

OleDbCommand and Unicode Char

您将需要设置参数的数据类型,要么使用Add重载之一,要么使用new创建参数,设置属性,然后将其添加到集合中。

下面是OleDb数据类型:

http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbtype.aspx

VarWChar是unicode

如果您正在使用SqlServer,那么您可能希望使用本机驱动程序,以便您可以获得Sql数据类型,它具有更准确的匹配。

如果你想要跨数据库兼容,那么你可以往相反的方向走,使用System.Data.Common数据类型,DbType。XXX, ref http://msdn.microsoft.com/en-us/library/system.data.dbtype.aspx(或ODBC和它的类型枚举,因为微软说他们正在逐步淘汰OleDb作为一种支持ODBC的技术)