数据批量入库,如何跳过已经存在的记录?
数据库中有一个表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值,这是怎么回事?
在页面上放了一个文本框: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值,这是怎么回事?
...全文
相关推荐
K3其他出入库-调拨单批量数据导入插件
金蝶K3 Wise 12.2/3版本适用,其余版本未测试; 部署此插件后,在其他出库单、其它入库、调拨单新增页面会出现导入按钮,可实现数据批量导入,节省手工录入工作量、减少出错。 部署前请自行阅读注意事项!
python批量入库--cx_oracle
1、实现Python批量数据入库。 2、统一提交事物,保证数据的完整性
Mysql使用insert插入多条记录 批量新增数据
如果要向table1中插入5条记录,下面写法是错误的: INSERT INTO table1 (id,name) VALUES(1,小明,2,小强,3,小杜,4,小李,5,小白); MySQL将会抛出下面的错误 ERROR 1136: Column count doesn't match value count at row 1 而正确的写法应该是这样: INSERT INTO t able1(i,name) VALUES(1,'小明'),(2,'小强'),(3,'小杜'),(4,'小李'),(5,'小白'); 当然,这种写法也可以省略列名,这样每一对括号里的值的数目必须一致,而且这个数
数据批量入库工具orcl
数据批量入库,针对orcle,需要提前测试连接数据库,数据库已经存在相应的数据库表
Java jdbc批量多线程读取CVS文件入库
主要为大家详细介绍了Java jdbc批量多线程读取CVS文件入库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


