数据批量入库,如何跳过已经存在的记录?
数据库中有一个表Banknotes,其中Code是主键。
在页面上放了一个文本框:txtCodes,用下面的代码多行输入多条记录的Code。
因为数据库中定义了Code为主键,如果输入的批量中有已存在表中的记录,程序就出错。
怎么改写能实现:Insert没有问题的数据后,显示那些因为Code在表中已存在,所以没有Insert的数据?
Dim Cn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db1.mdb"))
Dim StrCode() As String
StrCode = txtCodes.Text.Replace(vbTab, "").Split(vbCr)
Dim StrParvalue As String
If RbLstParvalue.SelectedValue <> "" Then
StrParvalue = RbLstParvalue.SelectedValue
Else
Exit Sub
End If
Dim Cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand
Cmd.Connection = Cn
Cn.Open()
Dim I As Integer
Dim iC As Integer = 0
Dim bErr As Boolean = False
Try
For I = LBound(StrCode) To UBound(StrCode)
If Len(StrCode(I)) = 10 Then
Cmd.CommandText = "Insert Into [Banknotes]([Code],[ParvalueCode]) Values('" & StrCode(I) & "','" & StrParvalue & "')"
Cmd.ExecuteNonQuery()
iC = iC + 1
End If
Next
Catch
bErr = True
If Len(StrCode(I)) = 10 Then
Response.Write(StrCode(I) & "入库失败,已有相同编号记录存在!")
End If
Finally
Cn.Close()
End Try
Dim StrJsc As String
If Not bErr Then
StrJsc = "<" & "script language=JavaScript>alert('保存成功" & CStr(iC) & "条记录!'); window.location.href='query.aspx';" & vbCrLf & "</" & "script>"
Else
StrJsc = "<" & "script language=JavaScript>alert('保存成功" & CStr(iC) & "条记录!'); " & vbCrLf & "</" & "script>"
End If
ClientScript.RegisterClientScriptBlock(Me.GetType, "alert", StrJsc)
但是如果用上面的代码,第一第记录成功Insert 后,第二条记录表中已有数据,但是bErr仍然是True值,这是怎么回事?