检查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是不正确的,我没有测试它,但我希望你的想法。

+0

正是我在找的,谢谢! :) – Dox 2010-02-09 09:59:56

您可以使用与插入操作相同的关键条件快速运行SELECT COUNT(*) FROM blah blah blah吗?

+0

这就是我第一次想到的。问题是会有不止一个相同的行,所以除非我保留重复行的数量,否则这不是很有用。另外我想尽可能减少我的数据库查询:) – Dox 2010-02-09 09:52:55

使用ExecuteNonQuery方法,因为查询不返回任何结果。该方法返回一个整数,它是受影响的行数。

Dim count As Integer = cmd.ExecuteNonQuery()