Как установить OracleCommand.BindByName =true в.net?

Среда:

-Визуальная Студия 2010 (.NET FrameWork 4)

  • Веб-приложение ASP.NET

  • База данных Oracle

  • используя System.Data.OracleClient

У меня есть веб-форма, где пользователь может вводить любые данные или не вводить данные в текстовые поля, соответствующие каждому параметру в моем запросе. Если пользователь не вводил данные, текстовое поле получит значение "0".

вот мой запрос:

ВЫБЕРИТЕ "CardNo", "Name" ИЗ CardList WHERE("CardNo"=:CardNo или:CardNo=0) и ("Имя" =: Имя или: Имя = 0)

Когда я щелкаю правой кнопкой мыши запрос из адаптера таблицы на панели MYDATABASE.xsd и выбираю "Предварительный просмотр данных" и заполняю значения параметров "0", я получаю ошибку (" ORA-01008: не все переменные связаны"). После долгих поисков я обнаружил, что должен установить OracleCommand.BindByName =true (по-видимому, по умолчанию это не так)

Кто-нибудь может мне помочь, как это сделать?

1 ответ

Используйте Oracle.ManagedDataAccess вместо System.Data.OracleClient, который устарел

Создайте команду objet:

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
    ...
}
Другие вопросы по тегам