1

环境:

-Visual Studio 2010(.NET 框架 4)

  • ASP.NET 网络应用程序

  • 甲骨文数据库

  • 使用 System.Data.OracleClient

我有一个网络表单,用户可以在其中输入任何或不输入任何数据到与我的查询中的每个参数相对应的文本框中。如果用户没有输入数据,则文本框将获得“0”值。

这是我的查询:

SELECT "CardNo" , "Name" FROM CardList WHERE("CardNo"=:CardNo or :CardNo=0) and ("Name"=:Name or :Name=0)

当我在 MYDATABASE.xsd 面板中的表适配器上右键单击查询,然后选择“预览数据”并用“0”填充参数值时,我收到错误消息(“ORA-01008:并非所有变量都绑定”)。经过大量搜索后,我发现我应该设置 OracleCommand.BindByName =true (显然默认情况下它不是真的)

谁能帮我怎么做?

4

1 回答 1

0

使用 Oracle.ManagedDataAccess 而不是已弃用的 System.Data.OracleClient

创建命令对象:

using(Oracle.ManagedDataAccess.Client.OracleConnection connection = new Oracle.ManagedDataAccess.Client.OracleConnection(myConnectionString))
{
    connection.Open();
    Oracle.ManagedDataAccess.Client.OracleCommand command = new    Oracle.ManagedDataAccess.Client.OracleCommand();
    command.CommandText = "SELECT ..."
    command.BindByName = true;
    // execute your command
    ...
}
于 2016-01-13T10:01:07.000 回答