读书人

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

发布时间: 2013-08-04 18:26:16 作者: rapoo

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

读书人网 >VB Dotnet

热点推荐