日期:2014-05-18  浏览次数:20424 次

困饶了一天的问题:往oracle插入数据时
PRODUCTION_ID是GUFEI.PRODUCTION的主键,非空;UNITBASIC_ID是外键和UNITBASIC表关联,也非空;
想提交5个textbox的内容到数据库啊,分别对应GUFEI.PRODUCTION表里的PRODUCTNO,   PRODCODE,PUNIT,PRODNAME,PQUANTITY这5个,下面是提交button的代码:
protected   void   Button2_Click(object   sender,   EventArgs   e)
        {
                OracleConnection   conn   =   new   OracleConnection( "Data   Source=caora;User   ID=gufei;Password=gufei; ");
                //在此构造你所需的Sql语句。
                String   strSql   =   "Insert   into   GUFEI.PRODUCTION(PRODUCTION_ID,UNITBASIC_ID,   PRODUCTNO,   PRODCODE,PUNIT,PRODNAME,PQUANTITY)   values(nvl((select   max(PRODUCTION_ID)   from   GUFEI.PRODUCTION),   1),   nvl((select   max(UNITBASIC_ID)   from   GUFEI.PRODUCTION),   1), ' "   +   TextBox1.Text   +   " ', ' "   +   TextBox2.Text   +   " ', ' "   +   TextBox3.Text   +   " ', ' "   +   TextBox4.Text   +   " ', ' "   +   TextBox5.Text   +   " ') ";
                OracleCommand   cmd   =   new   OracleCommand(strSql,   conn);
                cmd.Connection.Open();
                //通过SqlCommand对象执行Sql命令语句即可。      
                cmd.ExecuteNonQuery();
执行的时候会报错:ORA-00001:   违反唯一约束条件   (GUFEI.SYS_C0020113)
弄了一天了没解决,大家帮下


------解决方案--------------------
多半是主键重复了。
OracleCommand cmd 之前,加入

Response.Write(strSql);
Response.End();
看下你语句是否错了。
看不出来的话,拷贝你的SQL语句,拿到Oracle数据库管理器中执行下,看下,是不是一样的报错?
------解决方案--------------------
同上,就是你插入PRODUCTION_ID的值跟数据库里有相同值
------解决方案--------------------
唯一鍵重複﹗違反約束!