使用参数化 DbCommand 的一个缺点是需要参数的代码将仅适用于支持相同语法的提供程序。OLEDB、SqlClient 和 Oracle 提供程序全部使用不同的语法。例如,用于命名和指定参数的 SQL 语法使用 @ 符号,OLEDB 参数语法需要使用问号 (?) 作为参数占位符,而 Oracle 提供程序使用冒号 (:)。

string sqlstr = " select * from table where id=@id and name=@name ";
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)

@sn在@sadd之前 如果你在写参数的时候把‍@sn‍和@sadd的顺序写反 那么传递的参数也会反过来 即使你的‍p.ParameterName定义准确了也一样

关于OLEDB参数化查询【.net】相关推荐

  1. OLEDB 参数化查询

    一般情况下,SQL查询是相对固定的,一条语句变化的可能只是条件值,比如之前要求查询二年级学生信息,而后面需要查询三年级的信息,这样的查询一般查询的列不变,后面的条件只有值在变化,针对这种查询可以使用参 ...

  2. mysql 查询语句 参数,mysql参数化查询语句有关问题

    mysql参数化查询语句问题 部分代码如下: using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.O ...

  3. 参数化查询 但未提供该参数(将null插入数据库)

    当你是使用参数化查询时为参数赋值时,比如command.Parameters.Add("@a",SqlDbType.Text,30).Value=a;当a=null是将报错: 错参 ...

  4. SqlParameter参数化查询

    上篇博客写了关于重构代码用到的SQLHelper类,这个类包括四种函数,根据是否含参和是否有返回值各分两种.在这里写写传参过程用到的SqlParameter. 如果我们使用如下拼接sql字符串的方式进 ...

  5. java参数化查询_小博老师解析Java核心技术 ——JDBC参数化查询(二)

    [步骤阅读四]SQL注入 按照以上方式开发,确实已经完成了基本的用户登录业务需求,但是这么做的话可以会出现一个比较严重的问题,那就是容易被SQL注入.所谓SQL注入,就是在需要用户填写信息,并且这些信 ...

  6. C# 中是否支持 Like 和 ln 条件的参数化查询 ?

    咨询区 Tom Ritter .NET 中的参数化查询我一直都像下面这样写. SqlCommand comm = new SqlCommand(@"SELECT * FROM Product ...

  7. php pdo 查询语句,PDO:预处理语句(参数化查询)

    @(PDO(PHP data object/PHP数据对象))[PDO|预处理语句|参数化查询] The database library called PHP Data Objects or PDO ...

  8. pdo 参数化查询 mysql函数_PDO笔记之参数化查询

    参数化查询解释在这里:Wiki参数化查询 (少有的Wiki中文比英文介绍的要详细的编程条目) PDO中参数化查询主要用到prepare()方法,然后这个方法会返回一个PDOStatement对象,也就 ...

  9. Sql Server参数化查询之where in和like实现之xml和DataTable传参

    在上一篇Sql Server参数化查询之where in和like实现详解中介绍了在Sql Server使用参数化查询where in的几种实现方案,遗漏了xml和表值参数,这里做一个补充 文章导读 ...

最新文章

  1. 【spring】spring基于xml的声明式事务控制
  2. (iOS-基本知识)int long NSInteger 入门与兼容问题讲解
  3. 剑指offer 04:重构二叉树
  4. Activiti实战. 导读
  5. maya中英文切换插件_老司机都在用的30款maya常用插件
  6. Linux笔记-grep -v功能相关说明
  7. 在 Unity 多人游戏中实现语音对话
  8. Android Developers:使ListView滑动流畅
  9. 蒙特卡罗方法 python 实现2
  10. c# winform 显示动态gif图片的简单方法
  11. ChartControl动态添加曲线,X轴Label间隔显示
  12. CRC循环冗余校验码
  13. 洛谷每日三题之第三天(第四天补做)
  14. 虚拟机超线程性能分析深入浅出
  15. 电脑连接手机热点频繁掉线问题
  16. [北航软工教学] 教学计划大纲
  17. 51单片机基础——数码管数组动态显示0—F
  18. [RK3399][Android7.1]触摸屏TP,敦泰FT5436驱动移植
  19. x265编码H265
  20. 15、wxapp - 小程序登录以及全局参数 - 微擎小程序模块应用开发

热门文章

  1. 日常快捷键、代码快捷键
  2. Java排序之归并排序 1
  3. mac可以正常联网,其他的app也可以正常使用,就是浏览器无法浏览网页,解决办法在这里
  4. 用Qemu搭建x86学习环境
  5. android监听耳机,Android监听耳机按键事件
  6. 浙江大学pta答案python第四章_浙大PTA-Python题库 编程题第一章(1-1~1-3)题解
  7. [tcpreplay] tcpreplay高级用法--使用tcpreplay-edit进行循环动态发包
  8. JSP的四大作用域及属性范围
  9. 神经网络与机器学习 pdf 全文内容详细分享
  10. 我在北大青鸟的工作经历