我有一个使用OleDbCommand运行大量查询的应用程序。每个查询都是纯SQL文本,并且命令不使用参数。
现在,应用程序应该支持中文字符,我不想通过在指定字符串前添加N字符来更改每个查询。
我正在尝试做这样的事情,但它不起作用:
OleDbCommand command = new OleDbCommand("?", connect);
command.CommandType = CommandType.Text;
command.Parameters.AddWithValue("query", qry);
OleDbDataAdapter da = new OleDbDataAdapter(command);其中qry是在每个字符串前面没有N字符的情况下执行的查询。
我真的不想改变每一个查询,那会是一团乱。
你对我有什么解决方案吗?
发布于 2013-04-24 19:59:03
您需要设置参数的数据类型,可以使用Add重载之一,也可以使用new创建参数,设置属性,然后将其添加到集合中。
下面是OleDb数据类型:
http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbtype.aspx
VarWChar是unicode
如果您使用的是SqlServer,那么您可能希望使用本机驱动程序,这样就可以获得具有更精确匹配的Sql数据类型。
如果您要实现跨数据库兼容性,那么您可能会选择相反的方向,使用System.Data.Common数据类型、DbType.XXX、引用http://msdn.microsoft.com/en-us/library/system.data.dbtype.aspx (或ODBC及其类型枚举,因为微软表示他们正在逐步淘汰OleDb作为一种技术,转而使用ODBC)。
https://stackoverflow.com/questions/16189144
复制相似问题