/// <summary>
        /// oracle数据库操作
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public int oracleExecuteNonQuery(string sql)
        {
            using (OracleConnection conn = new OracleConnection(ConnString))
            {
                conn.Open();
                using (OracleCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    int i = cmd.ExecuteNonQuery();
                    return i;
                }
            }
        }      /// <summary>
        /// 增加数据
        /// </summary>
        /// <param name="tableName"></param>
        public void Add(string tableName)
        {
            string sql = "select * from " + tableName;
            DataSet ds = db.sqlTableShow(sql);
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                model.IDVOLUME = Int32.Parse(ds.Tables[0].Rows[i]["IDVolume"].ToString());
                model.IDARCHIVE = long.Parse(ds.Tables[0].Rows[i]["IDArchive"].ToString());
                model.ARCHIVEID = ds.Tables[0].Rows[i]["ArchiveID"].ToString();
                model.DUTYMAN = ds.Tables[0].Rows[i]["DutyMan"].ToString();
                if (ds.Tables[0].Rows[i]["Title"].ToString().Contains("'"))
                {
                    model.TITLE = ds.Tables[0].Rows[i]["Title"].ToString().Replace("'", "吋");
                }
                else
                {
                    model.TITLE = ds.Tables[0].Rows[i]["Title"].ToString();
                }
                model.GOTTIME = Convert.ToDateTime((Convert.ToDateTime(ds.Tables[0].Rows[i]["GotTime"])).ToString("yyyy-MM-dd"));
                model.PAGES = ds.Tables[0].Rows[i]["Pages"].ToString();
                model.REMARK = ds.Tables[0].Rows[i]["Re"].ToString();
                model.JUANXUHAO = ds.Tables[0].Rows[i]["JuanXuHao"].ToString();
                if (ds.Tables[0].Rows[i]["TitleFormat"].ToString().Contains("'"))
                {
                    model.TITLEFORMAT = ds.Tables[0].Rows[i]["TitleFormat"].ToString().Replace("'", "吋");
                }
                else
                {
                    model.TITLEFORMAT = ds.Tables[0].Rows[i]["TitleFormat"].ToString();
                }
                model.GOTTIMESPECIAL = ds.Tables[0].Rows[i]["GotTimeSpecial"].ToString();
                StringBuilder strSql = new StringBuilder();
                strSql.Append("insert into AMARCHIVES(");
                strSql.Append("IDVOLUME,TITLEFORMAT,GOTTIMESPECIAL,IDARCHIVE,ARCHIVEID,DUTYMAN,TITLE,GOTTIME,PAGES,REMARK,JUANXUHAO");
                strSql.Append(") values (");
                strSql.Append(":IDVOLUME,:TITLEFORMAT,:GOTTIMESPECIAL,:IDARCHIVE,:ARCHIVEID,:DUTYMAN,:TITLE,:GOTTIME,:PAGES,:REMARK,:JUANXUHAO");
                strSql.Append(") ");                OracleParameter[] parameters = {
            new OracleParameter(":IDVOLUME", OracleType.Number,10) ,            
                        new OracleParameter(":TITLEFORMAT", OracleType.NVarChar) ,            
                        new OracleParameter(":GOTTIMESPECIAL", OracleType.NVarChar) ,            
                        new OracleParameter(":IDARCHIVE", OracleType.Number,19) ,            
                        new OracleParameter(":ARCHIVEID", OracleType.NVarChar) ,            
                        new OracleParameter(":DUTYMAN", OracleType.NVarChar) ,            
                        new OracleParameter(":TITLE", OracleType.NVarChar) ,            
                        new OracleParameter(":GOTTIME", OracleType.DateTime) ,            
                        new OracleParameter(":PAGES", OracleType.NVarChar) ,            
                        new OracleParameter(":REMARK", OracleType.NVarChar) ,            
                        new OracleParameter(":JUANXUHAO", OracleType.NVarChar)                   
            };                parameters[0].Value = model.IDVOLUME;
                parameters[1].Value = model.TITLEFORMAT;
                parameters[2].Value = model.GOTTIMESPECIAL;
                parameters[3].Value = model.IDARCHIVE;
                parameters[4].Value = model.ARCHIVEID;
                parameters[5].Value = model.DUTYMAN;
                parameters[6].Value = model.TITLE;
                parameters[7].Value = model.GOTTIME;
                parameters[8].Value = model.PAGES;
                parameters[9].Value = model.REMARK;
                parameters[10].Value = model.JUANXUHAO;
                db.oracleExecuteNonQuery(strSql.ToString());
            }
        }
提示ORA-01008: 并非所有变量都已绑定

解决方案 »

  1.   

    把new OracleParameter(":IDVOLUME", OracleType.Number,10) ,            
                            new OracleParameter(":TITLEFORMAT", OracleType.NVarChar) , 
    参数名称中的冒号去掉试试
    new OracleParameter("IDVOLUME", OracleType.Number,10)
      

  2.   

    去掉后提示
    ORA-00984: 列在此处不允许
      

  3.   

    不好意思,没有认真看你的执行语句
    db.oracleExecuteNonQuery(strSql.ToString());
    根本没有把参数 parameters[] 给传递进去
    另外,我使用的时候,参数OracleParameter中的名称都是去掉冒号(:)的
      

  4.   

    传了的啊
    StringBuilder strSql = new StringBuilder();
                    strSql.Append("insert into AMARCHIVES(");
                    strSql.Append("IDVOLUME,TITLEFORMAT,GOTTIMESPECIAL,IDARCHIVE,ARCHIVEID,DUTYMAN,TITLE,GOTTIME,PAGES,REMARK,JUANXUHAO");
                    strSql.Append(") values (");
                    strSql.Append(":IDVOLUME,:TITLEFORMAT,:GOTTIMESPECIAL,:IDARCHIVE,:ARCHIVEID,:DUTYMAN,:TITLE,:GOTTIME,:PAGES,:REMARK,:JUANXUHAO");
                    strSql.Append(") ");
      

  5.   

    db.oracleExecuteNonQuery(strSql.ToString()); 在这句执行之前应该把你定义的parameters 对象传给db,db在执行的时候去处理parameters 。
    foreach ( IDbDataParameter p in pms )
                    {
                        dbAdapter.InsertCommand.Parameters.Add ( p );
                    }
    大概是这个样子