2012-11-24 41 views
1

我有一個使用Access數據庫的Visual Basic項目。我運行一個查詢,但在數據庫表中看不到任何新的數據。我沒有任何異常或錯誤。而不是顯示成功消息框。 這裏是我的代碼:正確的代碼但無法插入到數據庫

Dim ID As Integer = 2 
    Dim TableNumber As Integer = 2 
    Dim OrderDate As Date = Format(Now, "General Date") 
    Dim TotalPrice As Double = 100.0 
Dim ConnectionString As String = "myconnectionstring" 
    Dim con As New OleDb.OleDbConnection(ConnectionString) 


    Try 
     Dim InsertCMD As OleDb.OleDbCommand 

     InsertCMD = New OleDb.OleDbCommand("INSERT INTO Orders([ID],[TableNumber],[OrderDate],[TotalPrice]) VALUES(@ID,@TableNumber,@OrderDate,@TotalPrice);", con) 
     InsertCMD.Parameters.AddWithValue("@ID", ID) 
     InsertCMD.Parameters.AddWithValue("@TableNumber", TableNumber) 
     InsertCMD.Parameters.AddWithValue("@OrderDate", OrderDate) 
     InsertCMD.Parameters.AddWithValue("@TotalPrice", TotalPrice) 

     con.Open() 
     InsertCMD.ExecuteNonQuery() 
     MessageBox.Show("Successfully Added New Order", 
         "Success", MessageBoxButtons.OK, MessageBoxIcon.Information) 
     con.Close() 
    Catch ex As Exception 
     'Something went wrong 
     MessageBox.Show(ex.ToString) 
    Finally 
     'Success or not, make sure it's closed 
     If con.State <> ConnectionState.Closed Then con.Close() 
    End Try 

什麼問題?

+0

ID是自動編號列嗎? – Steve

+0

我嘗試使用自動增量,但不使用它,但他們都沒有工作 – Dchris

+0

你確定你沒有更新數據庫的副本嗎? http://stackoverflow.com/questions/13515419/vb-net-access-db-insert-not-inserting-data – Fionnuala

回答

1

發生以下兩件事之一:或者數據沒有得到更新,或者它正在更新,並且在以後查找時會丟失它。 ExecuteNonQuery通常返回的行數。如果它是零,那麼它可能會失敗,沒有例外。這可能與重複的ID有關。

如果插入成功,那麼由於某種原因,您沒有看到新記錄。也許你正在尋找錯誤的地方,或者由於某種原因,記錄可能沒有出現在查詢中。我不知道默認情況下「重複更新」的任何內容,但是如果Access存在,則可能導致問題。

1

昏暗的ConnectionString的String =「myconnectionstring」

我用ADO與德爾福連接到訪問,所以也許有些不同,但我像你可能甚至沒有連接到數據庫的連接字符串想象更不用說更新它了。

con.Open()可能是一個函數,它將返回某種表示連接成功或失敗的結果。 Open和ExecuteNonQuery命令失敗可能不會引發異常,在這種情況下,您的成功消息將顯示是否實現連接。異常不是唯一的錯誤類型。通常,如果函數返回一個表示成功或失敗的結果,則應該在條件語句中查詢該結果以確定是處理還是顯示錯誤消息。在異常處理程序中包裝大量代碼是懶惰的,並且在許多情況下不起作用。

0

我可以看到的唯一可能的問題是數據庫中的ID字段是否爲自動增量字段,否則應該起作用。另外,我發現下面的方法要簡單得多

使用設置插入新的數據如下

Me.OrdersTableadapter.insert(ID,tableNumber,orderDate存儲TotalPrice) 「NB表適配器和數據:參數這個方法將按照你的表列的順序排列 Me.OrdersTableadapter.Fill(me.Dataset.Orderstableadapter)