OleDbCommand使用参数应该注意的地方

OleDbCommand使用参数应该注意的地方最近写程序用到OleDbCommand的Parameter写数据库,遇到很多问题:1、OLEDB.NETFramework数据提供程序和ODBC.NETFramework数据提供程序不支持用于将参数传递到SQL语句或存储过程的命名参数。在此情况下,必须使用问号(?)占位符,如以下示例所示。SELECT*FROMCustomersWHERECustomerID

大家好,又见面了,我是你们的朋友全栈君。

最近写程序用到OleDbCommand的Parameter写数据库,遇到很多问题:

1、OLE DB .NET Framework 数据提供程序和 ODBC .NET Framework 数据提供程序不支持用于将参数传递到 SQL 语句或存储过程的命名参数。在此情况下,必须使用问号 (?) 占位符,如以下示例所示。SELECT * FROM Customers WHERE CustomerID = ?

2、将参数用于OleDbCommand 或 OdbcCommand 时,向 Parameters 集合中添加参数的顺序必须与存储过程中所定义的参数顺序相匹配。OLE DB .NET Framework 数据提供程序和 ODBC .NET Framework 数据提供程序将存储过程中的参数视为占位符,并且将按顺序使用这些参数值。另外,返回值参数必须是添加到 Parameters 集合中的第一批参数。
因此,向 Parameters 集合添加 Parameter 对象的顺序必须直接对应于该参数的问号占位符的位置 

例如:

                string sql = “insert into T_Fundratesum(fundcode,yhcode,sumdate,period,m12brate,m12rrate,createtimestamp) values (?,?,?,?,?,?,?)”;
                OleDbCommand comm = new OleDbCommand(sql, conn);
                comm.Parameters.Add(new OleDbParameter(“@fundcode”, OleDbType.VarChar));
                comm.Parameters[0].Value = dt.Rows[i][“yhcode”].ToString();
                comm.Parameters.Add(new OleDbParameter(“@yhcode”, OleDbType.VarChar));
                comm.Parameters[1].Value = dt.Rows[i][“fundcode”].ToString();
                comm.Parameters.Add(new OleDbParameter(“@sumdate”, OleDbType.Date));
                comm.Parameters[2].Value = DateTime.Now.ToString();
                comm.Parameters.Add(new OleDbParameter(“@PERIOD”, OleDbType.Double));
                comm.Parameters[3].Value = dt.Rows[i][“PERIOD”];
                comm.Parameters.Add(new OleDbParameter(“@M12BRATE”, OleDbType.Double));
                comm.Parameters[4].Value = dt.Rows[i][“M12BRATE”];
                comm.Parameters.Add(new OleDbParameter(“@M12RRATE”, OleDbType.Double));
                comm.Parameters[5].Value = dt.Rows[i][“M12RRATE”];
                comm.Parameters.Add(new OleDbParameter(“@createtimestamp”, OleDbType.VarChar));
                comm.Parameters[6].Value = DateTime.Now.ToString();

当然还有最笨的办法就是,定义一个字符串,然后将其里面的参数用string.replace替换。

我从网上查到一个网友的回复如下:我想应该是这样的

1.SqlCommand should be ‘@’ character
2.OleDbCommand or OdbcCommand should be ‘?’ character
3.OracleCommand should be ‘:’ character

唉,这些Command的不便利性使得用户在使用时常常摸不到头脑,不同的command有不同的参数格式设置,以后应该多多注意。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144402.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 缓存工具类初始化_Java缓存框架

    java 缓存工具类初始化_Java缓存框架Java缓存工具类Cache工具类定义

    2022年10月4日
    3
  • js判断是否是数字

    js判断是否是数字js判断是否是数字 (请输入数字)       functioncheckRate(input){    varre=/^[0-9]+.?[0-9]*$/;  //判断字符串是否为数字    //判断正整数/^[1-9]+[0-9]*]*$/    varnubmer=document.getElementById(input

    2022年6月29日
    25
  • 2021-09-09PHP json_encode中文乱码[通俗易懂]

    2021-09-09PHP json_encode中文乱码[通俗易懂]加参数限制就可以了。echojson_encode($res,JSON_UNESCAPED_UNICODE);

    2022年7月11日
    18
  • 大数据–商品推荐系统介绍(上)

    这次我们介绍商品推荐系统:推荐系统是什么推荐引擎的分类常见的推荐算法混合的推荐机制(重要)推荐系统架构协同过滤的实现推荐引擎解决的几个问题主动的用户,通过类目和搜索进行引导,对结果页进行干预被动的用户,通过用户的历史行为分析,推荐用户可能感兴趣的商品。对商家来讲,帮助商家卖出更多的东西推荐系统是什么目的为了解决信息过载和用户无明确需求的问题,找到用户感兴趣的物品…

    2022年4月3日
    38
  • 运算放大器 之 概述

    运算放大器 之 概述转载来源:[维基百科]《运算放大器》运算放大器(英语:OperationalAmplifier,简称OP、OPA、op-amp、运放)是一种直流耦合,差模(差动模式)输入、通常为单端输出(Differential-in,single-endedoutput)的高增益(gain)电压放大器。在这种配置下,运算放大器能产生一个比输入端电势差大数十万倍的输出电势(对地而言)。因为…

    2022年5月24日
    82
  • ubuntu命令行安装deb_ubuntu命令行安装deb软件

    ubuntu命令行安装deb_ubuntu命令行安装deb软件1、下载需要安装的deb包,输入以下命令安装:$sudodpkg-ipackage.deb2、查看package.deb包中的内容:$dpkg-cpackage.deb3、从package.deb包中提取信息:$dpkg-Ipackage.deb4、移除安装的deb包:$dpkg-rpackage5、…

    2022年10月21日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号