0

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

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

我正在尝试做类似的事情,但它不起作用:

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

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

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

你有我的解决方案吗?

4

1 回答 1

0

您将需要设置参数的数据类型,使用 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 和它的类型枚举,因为 MS 表示他们正在逐步淘汰 OleDb 作为支持 ODBC 的技术)

于 2013-04-24T11:59:02.623 回答