首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

VB.NET循环向access表中安插数据报错

2013-08-04 
VB.NET循环向access表中插入数据报错本帖最后由 zhoud881218 于 2013-07-23 14:01:27 编辑我把数据先放入

VB.NET循环向access表中插入数据报错
本帖最后由 zhoud881218 于 2013-07-23 14:01:27 编辑 我把数据先放入了ARRLIST数组,想利用循环插入表中,但是 最后报错:由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。
 以下是我的代码 紧急求教啊 myarr是我已经弄好的数组 一条数据是15个,2条就是30个

      FileCopy("E:\NQIS\02. Developement Repository\Source code\nqis\F\bin\Release\impact_model.mdb", "E:\NQIS\02. Developement Repository\Source code\nqis\F\bin\Release" + PK2.Text + ".mdb")

        '----------------------------------
        Dim con As New OleDbConnection("provider = microsoft.jet.oledb.4.0;data source=E:\NQIS\02. Developement Repository\Source code\nqis\F\bin\Release" + PK2.Text + ".mdb")

        '查询数据库

        Dim mySQL As String = "INSERT INTO TF_IO_IMPACT(MSG_FLAG,LOT_NO,TEST_NO,SMP_NO,SMP_LOC,RETEST_FLAG,MANU_NO,MTRL_NO,SPEC,DIMEN,IMPACT_TYPE,IMPACT_TEMP,IMPACT_DIR,IMPACT_A_DSC_CD,A_IMPACT_DSC_CD,IMPACT_COUNT) VALUES (@MSG_FLAG,@LOT_NO,@TEST_NO,@SMP_NO,@SMP_LOC,@RETEST_FLAG,@MANU_NO,@MTRL_NO,@SPEC,@DIMEN,@IMPACT_TYPE,@IMPACT_TEMP,@IMPACT_DIR,@IMPACT_A_DSC_CD,@A_IMPACT_DSC_CD,@IMPACT_COUNT)"
        For k = 0 To s - 1
            For v = 0 + k * 15 To 14 + k * 15
                Dim objCmd As New OleDbCommand(mySQL, con)
                con.Open() '打开数据库
                Dim a As Integer
                a = k * 15
                objCmd.Parameters.AddWithValue("@MSG_FLAG", "N")
                objCmd.Parameters.AddWithValue("@LOT_NO", myarr(0 + a))
                objCmd.Parameters.AddWithValue("@TEST_NO", myarr(1 + a))
                objCmd.Parameters.AddWithValue("@SMP_NO", myarr(2 + a))


                objCmd.Parameters.AddWithValue("@SMP_LOC", myarr(3 + a))
                objCmd.Parameters.AddWithValue("@RETEST_FLAG", myarr(4 + a))
                objCmd.Parameters.AddWithValue("@MANU_NO", myarr(5 + a))
                objCmd.Parameters.AddWithValue("@MTRL_NO", myarr(6 + a))
                objCmd.Parameters.AddWithValue("@SPEC", myarr(7 + a))
                objCmd.Parameters.AddWithValue("@DIMEN", myarr(8 + a))
                objCmd.Parameters.AddWithValue("@IMPACT_TYPE", myarr(9 + a))
                objCmd.Parameters.AddWithValue("@IMPACT_TEMP", myarr(10 + a))
                objCmd.Parameters.AddWithValue("@IMPACT_DIR", myarr(11 + a))
                objCmd.Parameters.AddWithValue("@IMPACT_A_DSC_CD", myarr(12 + a))
                objCmd.Parameters.AddWithValue("@A_IMPACT_DSC_CD", myarr(13 + a))
                objCmd.Parameters.AddWithValue("@IMPACT_COUNT", myarr(14 + a))
                objCmd.ExecuteNonQuery()
                con.Close()
                objCmd.Dispose()
            Next
        Next
        MsgBox("插入成功")
我把循环去掉直插入一条数据就不会报错,为什么呢 跪求答案啊 在线等


[解决办法]
由于将在索引、 主关键字、或关系中创建重复的
违反了数据库约束
检查主键或者唯一索引的字段是否插入了重复的值
[解决办法]
提示很明显,对主键,约束没有满足,比如主键有重复值
[解决办法]
Dim connStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=路径/数据库.mdb;Jet OLEDB:Database Password="
        Dim con As New OleDbConnection(connStr)
        con.Open()
        Dim com As New OleDbCommand()
        Dim myTrans As OleDbTransaction
        myTrans = con.BeginTransaction()
        com.Connection = con
        com.Transaction = myTrans
        Try
            com.CommandText = "SQL执行语句1"
            com.ExecuteNonQuery()
            com.CommandText = "SQL执行语句2"
            com.ExecuteNonQuery()
com.CommandText = "SQL执行语句3"
            com.ExecuteNonQuery()
            myTrans.Commit()
            MsgBox("成功!")
        Catch ex As Exception
            myTrans.Rollback()
            MsgBox("失败!")
        Finally
            con.Close()
        End Try 

热点排行