Я использую ADO.NET для подключения к Oracle DB через ODBC. Все работает отлично, кроме связывания параметров с помощью простого запроса SQL:Добавление параметров в предложение WHERE SQL-запроса
Connection.Open();
IDbCommand command = Connection.CreateCommand();
command.CommandText = "SELECT length FROM activity_type WHERE name = :name_of_activity";
var parameter = command.CreateParameter();
parameter.ParameterName = ":name_of_activity";
parameter.Value = "Short_break";
command.Parameters.Add(parameter);
int result = Convert.ToInt32(command.ExecuteScalar());
Connection.Close();
Он всегда возвращает 0 результат (а нуль из ExecuteScalar()
- то же от читателя). Но если бы я поставил простой SQL-запрос вроде этого: command.CommandText = "SELECT length FROM activity_type WHERE name = 'Short_break'"
он работал бы как шарм. Более того, я использовал подобные конструкции по всему коду для статей INSERT INTO
, и все было в порядке.
Я что-то упустил?
Большое спасибо за ваш ответ. Я попробовал «?» заполнитель до, без везения. Все тот же результат. Именованные параметры работают в любой другой части кода. Я извлек код из проекта, изначально 'Connection.Close()' находится в разделе 'finally'. – mcmil
@M_F: Это действительно «OdbcCommand»? Трудно сказать из довольно общего кода. К сожалению, разные поставщики поддерживают различные формы параметризованных запросов. Пробовали ли вы просматривать журналы базы данных, чтобы узнать, что происходит? –
Да, это OdbcCommand. Соединение создается как «IdbConnection Connection = новое OdbcConnection (« DSN = oracle; UID = xxx; PWD = xxx »);'. Спасибо, я пытаюсь добраться до журналов. – mcmil