.net oracle 参数化,.NET参数化Oracle查询参数

使

用参数化 DbCommand 的一个缺点是需要参数的代码将仅适用于支持相同语法的提供程序。OLEDB、SqlClient 和 Oracle

提供程序全部使用不同的语法。例如,用于命名和指定参数的 SQL 语法使用 @ 符号,OLEDB 参数语法需要使用问号 (?) 作为参数占位符,而

Oracle 提供程序使用冒号 (:)。

string sqlstr = " select * from table where [email protected] and [email protected] ";

System.Data.SqlClient.SqlParameter parameters = newSystem.Data.SqlClient.SqlParameter[2];

parameters[0] = new SqlParameter("@id", uid);

parameters[1] = new SqlParameter("@name", name);

string sqlstr = " select * from table where id=? and name=? ";

System.Data.OleDb.OleDbParameter parameters = new System.Data.OleDb.OleDbParameter[2];

parameters[0] = new OleDbParameter("id", uid);

parameters[1] = new OleDbParameter("name", name);

string sqlstr = " select * from table where id=:id and name=:name ";

System.Data.OracleClient.OracleParameter parameters = new System.Data.OracleClient.OracleParameter[2];

parameters[0] = new OracleParameter(":id", uid);

parameters[1] = new OracleParameter(":name", name);

在通过OLEDB传递参数时候需要注意的问题

对于ACCESS数据库 可以是?cmd.CommandText = "insert into shop(ShopName,ShopAddress) Values(@sn,@sadd)";

但是对于SQL数据库 就是cmd.CommandText = "insert into shop(ShopName,ShopAddress) Values(?,?)";

而且在ACCESS中对于传递的参数的添加顺序 即使给出变量名 也必须和SQL语句调用的顺序一致 否则会出错

比如

? cmd.CommandText = "insert into shop(ShopName,ShopAddress) Values(@sn,@sadd)";

cmd.Parameters.Clear();

p = new OleDbParameter();

p.ParameterName = "@sn"; p.OleDbType = OleDbType.Char; p.Value = sn;

cmd.Parameters.Add(p);

p = new OleDbParameter();

p.ParameterName = "@sadd"; p.OleDbType = OleDbType.Char; p.Value = sadd;

cmd.Parameters.Add(p);

因为语句中Values(@sn,@sadd)

@[email protected] 如果你在写参数的时候把[email protected]?[email protected] 那么传递的参数也会反过来 即使你的?p.ParameterName定义准确了也一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值