检查INSERT INTO语句是否成功
问题描述:
我正在使用MS Access数据库作为我的VB.NET应用程序的后端。我使用的是INSERT INTO语句输入用户信息到数据库:检查INSERT INTO语句是否成功
cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & config("DatabasePath") & ";")
cn.Open()
cmd = New OleDbCommand("INSERT INTO blah blah blah...", cn)
dr = cmd.ExecuteReader
一切正常,但我想检查数据实际上已被输入到数据库中。我试过使用:
cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & config("DatabasePath") & ";")
cn.Open()
cmd = New OleDbCommand("INSERT INTO blah blah blah...", cn)
dr = cmd.ExecuteReader
If dr.Read() Then
' Blah
End If
但显然插入语句不返回任何东西,所以这是行不通的。有什么建议么?
答
如果您拥有的是INSERT语句,则可以使用ExecuteNonQuery()
方法返回受影响的行数。
像这样:
cmd = New OleDbCommand("INSERT INTO blah blah...", cn)
rowCount = cmd.ExecuteNonQuery()
If rowCount < 1 Then
' Blah
你要原谅我,如果在VB是不正确的,我没有测试它,但我希望你的想法。
答
您可以使用与插入操作相同的关键条件快速运行SELECT COUNT(*) FROM blah blah blah
吗?
+0
这就是我第一次想到的。问题是会有不止一个相同的行,所以除非我保留重复行的数量,否则这不是很有用。另外我想尽可能减少我的数据库查询:) – Dox 2010-02-09 09:52:55
答
使用ExecuteNonQuery
方法,因为查询不返回任何结果。该方法返回一个整数,它是受影响的行数。
Dim count As Integer = cmd.ExecuteNonQuery()
正是我在找的,谢谢! :) – Dox 2010-02-09 09:59:56