zoukankan      html  css  js  c++  java
  • 另一个 OracleParameterCollection 中已包含 OracleParameter

    出现这个错误的时候,我按照百度来的方法 在finally里面加cmd.Parameters.Clear(); 在

    foreach (OracleParameter parm in cmdParms)
                    {
                        cmd.Parameters.Add(parm);
                    }

    前面加cmd.Parameters.Clear(); 都不管用 后来 发现又找到一种方法 这回管用了:

    OracleParameter pp = (OracleParameter)((ICloneable)parm).Clone();
                        cmd.Parameters.Add(pp);


    /// <summary>
    		/// 执行查询语句,返回DataSet
    		/// </summary>
    		/// <param name="SQLString">查询语句</param>
    		/// <returns>DataSet</returns>
    		public static DataSet Query(string SQLString,params OracleParameter[] cmdParms)
    		{
    			using (OracleConnection connection = new OracleConnection(connectionString))
    			{
                    using (OracleCommand cmd = new OracleCommand())
                    {
                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                        using (OracleDataAdapter da = new OracleDataAdapter(cmd))
                        {
                            DataSet ds = new DataSet();
                            try
                            {
                                da.Fill(ds, "ds");
                                cmd.Parameters.Clear();
                            }
                            catch (System.Data.OracleClient.OracleException ex)
                            {
                                throw new Exception(ex.Message);
                            }
                            finally
                            {
                                cmd.Parameters.Clear();
                            }
                            return ds;
                        }
                    }
    			}			
    		}



    private static void PrepareCommand(OracleCommand cmd,OracleConnection conn,OracleTransaction trans, string cmdText, OracleParameter[] cmdParms) 
    		{
    			if (conn.State != ConnectionState.Open)
    				conn.Open();
    			cmd.Connection = conn;
    			cmd.CommandText = cmdText;
    			if (trans != null)
    				cmd.Transaction = trans;
    			cmd.CommandType = CommandType.Text;//cmdType;
    			if (cmdParms != null) 
    			{
                    cmd.Parameters.Clear();
                    foreach (OracleParameter parm in cmdParms)
                    {
                        OracleParameter pp = (OracleParameter)((ICloneable)parm).Clone();
                        cmd.Parameters.Add(pp);
                    }
    			}
    		}



  • 相关阅读:
    动态代理:JDK动态代理和CGLIB代理的区别
    关于国密算法 SM1,SM2,SM3,SM4 的笔记
    加密算法比较3DES AES RSA ECC MD5 SHA1等
    通过mybatis向数据库中插入日期数据
    mapreduce流程中的几个关键点
    MapReduce二次排序
    Hadoop自定义分组Group
    编译hadoop2.6.0
    ERROR [org.apache.hadoop.security.UserGroupInformation]
    Java集合分组
  • 原文地址:https://www.cnblogs.com/yanergui/p/5624751.html
Copyright © 2011-2022 走看看