Это мой рабочий код
strQuery = @"SELECT FROM IBK_CO_USERS where upper(user_id)= upper(:userid) AND co_id= :Com_Id";
ocommand = new OracleCommand();
if (db.GetConnection().State == ConnectionState.Open)
{
ocommand.CommandText = strQuery;
ocommand.Connection = db.GetConnection();
ocommand.Parameters.Add("userid", OracleDbType.Varchar2);
ocommand.Parameters["userid"].Value = userID;
ocommand.Parameters.Add("Com_Id", OracleDbType.Varchar2);
ocommand.Parameters["Com_Id"].Value = Comid;
odatareader = ocommand.ExecuteReader();
odatareader.Read();
}
Снова я меняюсь так
ocommand.Parameters.Add("Com_Id", OracleDbType.Varchar2);
ocommand.Parameters["Com_Id"].Value = Comid;
ocommand.Parameters.Add("userid", OracleDbType.Varchar2);
ocommand.Parameters["userid"].Value = userID;'
Теперь он не работает. Должен ли я установить значение параметра согласно asending order
Я заметил следующие части, где вам нужно подумать:
ваш оператор select не содержит никаких полей для извлечения, попробуйте:
SELECT * FROM IBK_CO_USERS where .....
или указать точные поля, которые вы хотите получить
db.Open()
(вы просто проверяете, открыт ли он)Обычно обычным способом получения результатов sqlreader является использование фрагмента:
odatareader = ocommand.ExecuteReader();
while (odatareader.Read())
{
/// Fetch your data
}
В общем, до тех пор, пока вы задаете имя и значение параметра, и вы соедините эти два вместе, порядок instatination не играет никакой роли, например:
ocommand.Parameters.Add("Com_Id", OracleDbType.Varchar2);
ocommand.Parameters["Com_Id"].Value = Comid;
ocommand.Parameters.Add("userid", OracleDbType.Varchar2);
ocommand.Parameters["userid"].Value = userID;
эквивалентно:
ocommand.Parameters.Add("userid", OracleDbType.Varchar2);
ocommand.Parameters["userid"].Value = userID;
ocommand.Parameters.Add("Com_Id", OracleDbType.Varchar2);
ocommand.Parameters["Com_Id"].Value = Comid;
Единственный способ получить другой результат - изменить пару имен, например:
ocommand.Parameters.Add("userid", OracleDbType.Varchar2);
ocommand.Parameters["userid"].Value = Comid;
ocommand.Parameters.Add("Com_Id", OracleDbType.Varchar2);
ocommand.Parameters["Com_Id"].Value = userID;
результаты отличаются от предыдущих двух примеров
Однако в Oracle ODP.Net documentation
что параметры связаны положением по умолчанию. Если вы хотите установить его привязкой по набору имен:
ocommand.BindByName = true;