2010-02-09 146 views
6

我正在使用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 

但顯然插入語句不返回任何東西,所以這是行不通的。有什麼建議麼?

回答

8

如果您擁有的是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

0

您可以使用與插入操作相同的關鍵條件快速運行SELECT COUNT(*) FROM blah blah blah嗎?

+0

這就是我第一次想到的。問題是會有不止一個相同的行,所以除非我保留重複行的數量,否則這不是很有用。另外我想盡可能減少我的數據庫查詢:) – Dox 2010-02-09 09:52:55

0

使用ExecuteNonQuery方法,因爲查詢不返回任何結果。該方法返回一個整數,它是受影響的行數。

Dim count As Integer = cmd.ExecuteNonQuery()