sql参数更改错误
Posted
技术标签:
【中文标题】sql参数更改错误【英文标题】:sql parameter changing error 【发布时间】:2014-06-04 07:25:45 【问题描述】:这是我的工作代码
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;`
现在不工作了。我应该按照发送顺序设置参数值
【问题讨论】:
【参考方案1】:我注意到您需要考虑以下部分:
您的选择语句也不包含任何要检索的字段 试试:
SELECT * FROM IBK_CO_USERS where .....
或指定您要获取的确切字段
你永远不会打开连接:你必须打电话给db.Open()
(你只需检查它是否打开)
通常获取 sqlreader 结果的正常方法是使用 sn-p:
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;
结果与前 2 个示例不同
但是在Oracle ODP.Net documentation
中,默认情况下参数是由位置绑定的。如果要将其设置为由名称集绑定:
ocommand.BindByName = true;
【讨论】:
是的代码有一些问题。但我的问题是我们是否应该根据查询设置参数。我们可以更改参数顺序吗?? 我在 oracle DB 中工作,当我使用第二种方法时它不起作用以上是关于sql参数更改错误的主要内容,如果未能解决你的问题,请参考以下文章
各位大侠,请教个oracle问题,执行一段代码出现错误,希望各位给出解决办法,谢谢谢!
当优化器参数更改(ON/OFF)时,HAWQ 为相同的 sql 返回不同的输出