Как установить 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
...
}