2011-04-19 48 views
2

我想檢查一行是否插入到我的數據庫中。即使它插入時它也會拋出一個錯誤(這是一個數據庫問題,當我得到更新版本的Microsoft Access時會稍後解決),所以根據是否存在錯誤無法檢查插入是否成功。我想我需要檢查AffectedRows的東西,但我不知道是什麼。我一直在尋找如何做到這一點的信息,但我無法弄清楚如何使它適用於我的確切情況。這裏是我的代碼看起來像一個總體思路:檢查行是否被插入

Protected Sub Wizard1_FinishButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles Wizard1.FinishButtonClick 

'code for collecting data... 

'Define Connection 
    Dim myConn As New OleDbConnection 
    myConn.ConnectionString = AccessDataSource1.ConnectionString 
    myConn.Open() 

    'Insert command 
    Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse 'long insert command here... 

'Execute command and handle errors 
    Try 
     myIns1.ExecuteNonQuery() 
    Catch myException5 As Exception 
    End Try 

    'Close connection 
    myConn.Close() 

-UPDATE-

我想它是這樣的:

'Execute command, handle errors, and check if row was inserted 
    Dim numInserted As Integer = 0 
    Try 
     numInserted = myIns1.ExecuteNonQuery() 
    Catch myException As Exception 
    Finally 
     If numInserted = 0 Then 
      Label1.Text = "Sorry, an error occured." 
     Else 
      Label1.Text = "Thank you! Your new course approval request has been submitted." 
     End If 
    End Try 

但numInserted每一次即使出山爲0插入成功。這可能與myIns1.ExecuteNonQuery()即使插入成功但會引發錯誤有關。

-EDIT-我發現「重複值」錯誤是因爲它以某種方式嘗試插入記錄兩次。我不知道它爲什麼這樣做。

+0

我使用的Access 2003由於某些原因拋出一個有關重複值的古怪錯誤,我環顧四周,試圖弄清楚發生了什麼以及我能找到的所有信息都說它只是一個奇怪的怪癖(在直接在Access中工作時有一些修復),它在2007年也存在,但不是2010年。所以我打算儘快將我的數據庫更新到Access 2010。 – Sara 2011-04-19 01:05:37

+0

「出於某種原因,Access 2003出現了有關重複值的奇怪錯誤」, - 重複行是重複的行。你確定這是一個錯誤?你有沒有嘗試壓縮和修復你的數據庫? – 2011-04-19 01:55:08

+0

還沒有嘗試過對它做任何事情;我可能應該。這很奇怪,因爲它說每次插入時都有重複的行,即使沒有。儘管我不是Access的專家,但我知道的是我在網上找到的。 – Sara 2011-04-19 04:16:14

回答

0

ExecuteNonQuery函數返回的行受影響的數量...

Dim numInserted as Integer = myIns1.ExecuteNonQuery() 
If numInserted = 0 Then 
    ' no rows were inserted...throw exception? 
End If 
+0

似乎應該可以工作,但它每次都會以0出現。 – Sara 2011-04-20 00:02:55

0

你所描述的症狀(稱爲無重複,但刀片扔重複錯誤)聽起來像您的Access數據庫需要Compacting and Repairing

您應該定期進行此操作。 (總是先備份)。