【已解决】循环插入InsertOnSubmit Submitchanges时出现过一次异常信息:违反了 PRIMARY KEY 约束 。不能在对象 中插入重复键。后一直报重复错误
2016-12-07 14:54
477 查看
一旦出现某一行重复, rtx.SubmitChanges();会报重复错误
但是接下去 不重复的行 也会报重复错误
原因是:
//伪代码
//Row 3是重复行
提交Row3时会报错,并讲错误信息写入日志
开始第四行
但是在第四行时提交也会报错,原因是之前
在Row4 Insert 并 提交 之时,会将Row3的也提交
解决方案:
在catch中DeleteOnSubmit(Row3)
但是接下去 不重复的行 也会报重复错误
原因是:
rtx.SubmitChanges()时把之前InsertOnSubmit的也提交了。
//伪代码
//Row 3是重复行
try{ for(int Row=1;Row<=5;Row++) { InsertOnSubmit(Row); Submitchanges(); } } catch { write log; }
提交Row3时会报错,并讲错误信息写入日志
开始第四行
但是在第四行时提交也会报错,原因是之前
InsertOnSubmit了Row3
在Row4 Insert 并 提交 之时,会将Row3的也提交
解决方案:
在catch中DeleteOnSubmit(Row3)
rtx.GetTable(tp).DeleteOnSubmit(obj);//部分代码
autoworkDataContext rtx = new autoworkDataContext(Properties.Settings.Default.autoworkConnectionString); Assembly assam = Assembly.Load("Autowork"); Type tp= assam.GetType(fname); MethodInfo[] methods = tp.GetMethods();//获取方法 int colnr = dst.Columns.Count; int rownr = dst.Rows.Count; string[] colnames = new string[100]; for (int ii = 0; ii <= rownr - 1; ii++) { Object obj = new object(); obj = Activator.CreateInstance(tp); for (int jj = 0; jj <= colnr - 1; jj++) { colnames[jj] = dst.Columns[jj].ColumnName; string set_method = "set_" + colnames[jj]; // MessageBox.Show(Convert.ToString(colnames[jj])); MethodInfo method = tp.GetMethod(set_method);//获取方法 /* Type pp= dst.Rows[ii][jj].GetType(); MessageBox.Show(Convert.ToString(pp)); */ // MessageBox.Show(Convert.ToString(method.Name)); Type checktype = dst.Rows[ii][jj].GetType(); // MessageBox.Show(Convert.ToString(checktype.Name)); if (Convert.ToString(checktype.Name) == "Double") { Object[] array = { Convert.ToInt32(dst.Rows[ii][jj]) }; method.Invoke(obj, array); } else { Object[] array = { dst.Rows[ii][jj] }; method.Invoke(obj, array); } // MessageBox.Show(Convert.ToString(dst.Rows[ii][jj])); } try { rtx.GetTable(tp).InsertOnSubmit(obj); rtx.SubmitChanges(); } catch (Exception ex) { rtx.GetTable(tp).DeleteOnSubmit(obj); string exrow = string.Empty; for (int jj = 0; jj <= colnr - 1; jj++) { exrow = exrow + " " + dst.Rows[ii][jj].ToString(); } textBox.AppendText("\n" + exrow + " 行\n" + ex.Message + "\n"); // MessageBox.Show(exrow+" 行\n"+ex.Message); WriteLog(ex); } }
相关文章推荐
- [待解决]违反了 PRIMARY KEY 约束 'T_FileType_PK'。不能在对象 'dbo.T_FileType' 中插入重复键。语句已终止。
- 当您调用的 RDA 对象的拉方法时出现错误消息:"重复的值不能插入唯一索引。[表名 = __sysRDASubscriptions,约束名 = c_LocalTableName]"
- 违反了 PRIMARY KEY 约束 'PK_TBL_Profiles'。不能在对象 'dbo.TBL_Profiles' 中插入重复键。
- 违反了PRIMARY KEY约束不能在对象中插入重复 + 当IDENTITY_INSERT 设置为 OFF 时,不能向表 中的标识列插入显式值。
- sql 违反了 PRIMARY KEY 约束,不能在对象 中插入重复键
- T3记账时提示:运行时错误‘-2147217873(80040e2f)\':违反了PRIMMARY KEY 约束‘GL-mpostcond1_pk\"不能在对象‘GL-Mpostcond1中键入重复键
- 违反了 UNIQUE KEY 约束 'UNQ_CusID_DetachPolicyID'。不能在对象 'dbo.CustomerAccount' 中插入重复键。 语句已终止。 警告: 聚合或其
- [FAQ17435]插入两张卡,选择总是询问。非常快速的连续点击“快速拨号、最近、联系人”正上方的最近联系人,进行拨号,出现一次“拨号失败,已超过限制”后,就一直不能拨号。
- 捕获“ORA-00001: 违反唯一约束条件”异常并抛出业务相关的错误信息
- word中插入对象出现链接错误解决方法
- hibernate在做一对多关联时,保存一方的对象,报出不能插入外键的错误的解决方法
- oracle数据库出现“批处理中出现错误: ORA-00001: 违反唯一约束条件”解决方法
- 前台JS脚本出现“Automation服务器不能创建对象“错误的解决方法
- oracle中插入数据出现错误:ORA-02291: 违反完整约束条件 (SCOTT.FK_SX9MLJB8T3FWB40GVCSKHYSYT)- 未找到父项关键字
- 使用Entity Framwork 保存数据时,提示不能在对象中插入重复键,违反了PRIMARY_KEY约束
- 异常详细信息: System.InvalidCastException: 对象不能从 DBNull 转换为其他类型——的解决方法
- 编写一段程序,从标准输入读取string对象的序列直到连续出现两个相同的单词或者所有单词都读完为止。使用while循环一次读取一个单词,当一个单词连续出现两次是使用break语句终止循环。输出连续重复出现的单词,或者输出一个消息说明没有人任何单词是重复出现的。
- oracle中插入数据出现错误:ORA-02291: 违反完整约束条件 (SCOTT.FK_SX9MLJB8T3FWB40GVCSKHYSYT)- 未找到父项关键字
- linux 解决 安装软件一直出现重复的信息
- oracle数据库出现“批处理中出现错误: ORA-00001: 违反唯一约束条件”解决方法