2013-04-24 50 views
0

我有一个使用OleDbCommand运行大量查询的应用程序。每个查询都是普通的SQL文本,并且该命令不使用参数。OleDbCommand和Unicode字符

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

我试图做这样的事情,但它不工作:

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

其中QRY是查询,而无需N个字符在每个字符串的前执行。

我真的不会改变每一个查询,它会是一团糟。

您有解决方案吗?

回答

0

您将需要设置参数的数据类型,可以使用Add overload或使用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和它的类型枚举,因为MS表示它们正在分阶段将OleDb作为支持ODBC的技术)

+0

我不在我的查询中使用参数。 – AngeloBad 2013-04-24 12:27:39

+0

然后你可能发布了错误的源代码,因为这增加了一个参数:command.Parameters.AddWithValue(“query”,qry);它被命名为查询并具有qry的值。我没有看到你在哪里设置commandText。 – MatthewMartin 2013-04-24 14:58:21

+0

我发布的代码只是一个尝试。我只有字面sql执行没有参数。我必须执行命令“原样”,我没有可能设置参数来解决Unicode问题。所以我试图将命令文本作为参数处理,但它不起作用。 – AngeloBad 2013-04-24 15:45:48