2011-08-03 137 views
0

我正在使用vb.net 2010,我的提供程序是OLEDB。我正在使用vb.net製作一個數據庫程序,該程序通過我創建的導航按鈕瀏覽數據庫,但是,在按下「提交」或「更新」按鈕後出現以下錯誤。錯誤是{INSERT INTO語句中的語法錯誤}}它發生在{dataadapter.Update(dataset,「GRE Library」)2個按鈕內的兩個地方}
就我所知,其他一切正常。我確實有其他形式,但它們並不重要或不相關。錯誤:「INSERT INTO語句中的語法錯誤」

這裏是我的代碼:

Public Class EditLibraryForm 

Dim MaxRows As Integer 
Dim inc As Integer 
Dim connection As New OleDb.OleDbConnection 
Dim databaseProvider As String 
Dim databaseSource As String 

Dim dataset As New DataSet 
Dim dataadapter As OleDb.OleDbDataAdapter 
Dim sql As String 

Private Sub EditLibraryForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    databaseProvider = "Provider=Microsoft.ACE.OLEDB.12.0;" 
    databaseSource = "Data Source = H:\Game Revolutionaries Entertainment TEST2\Game Revolutionaries Entertainment\Resource\GRE Library.accdb" 
    connection.ConnectionString = databaseProvider & databaseSource 

    connection.Open() 
    sql = "SELECT * FROM [GRE Library Logistics]" 
    dataadapter = New OleDb.OleDbDataAdapter(sql, connection) 
    dataadapter.Fill(dataset, "GRE Library") 

    connection.Close() 

    MaxRows = dataset.Tables("GRE Library").Rows.Count 
    inc = -1 

End Sub 

Private Sub NavigateRecords() 

    txtname.Text = dataset.Tables("GRE Library").Rows(inc).Item(0).ToString 
    txtrating.Text = dataset.Tables("GRE Library").Rows(inc).Item(2).ToString 
    txtgenre.Text = dataset.Tables("GRE Library").Rows(inc).Item(3).ToString 
    txtplatform.Text = dataset.Tables("GRE Library").Rows(inc).Item(4).ToString 
    txtrd.Text = dataset.Tables("GRE Library").Rows(inc).Item(5).ToString 
    txtdc.Text = dataset.Tables("GRE Library").Rows(inc).Item(6).ToString 
    txtinfo.Text = dataset.Tables("GRE Library").Rows(inc).Item(7).ToString 
    txtpn.Text = dataset.Tables("GRE Library").Rows(inc).Item(8).ToString 
    txtsupport.Text = dataset.Tables("GRE Library").Rows(inc).Item(9).ToString 
    txtnews.Text = dataset.Tables("GRE Library").Rows(inc).Item(10).ToString 


End Sub 
Private Sub btnnext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnnext.Click 

    If inc <> MaxRows - 1 Then 
     inc = inc + 1 
     NavigateRecords() 
    Else 
     MsgBox("No More items in Library") 
    End If 

End Sub 

Private Sub btnprevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnprevious.Click 

    If inc > 0 Then 
     inc = inc - 1 
     NavigateRecords() 
    Else 
     MsgBox("This is First item") 
    End If 

End Sub 

Private Sub btnlast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnlast.Click 

    If inc <> MaxRows - 1 Then 
     inc = MaxRows - 1 
     NavigateRecords() 
    Else 
     MsgBox("Already on last item") 
    End If 

End Sub 

Private Sub btnfirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnfirst.Click 

    If inc <> 0 Then 
     inc = 0 
     NavigateRecords() 
    Else 
     MsgBox("Already on first item") 
    End If 

End Sub 

Private Sub btnupdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnupdate.Click 

    Dim cb As New OleDb.OleDbCommandBuilder(dataadapter) 

    txtname.Text = dataset.Tables("GRE Library").Rows(inc).Item(0).ToString 
    txtrating.Text = dataset.Tables("GRE Library").Rows(inc).Item(2).ToString 
    txtgenre.Text = dataset.Tables("GRE Library").Rows(inc).Item(3).ToString 
    txtplatform.Text = dataset.Tables("GRE Library").Rows(inc).Item(4).ToString 
    txtrd.Text = dataset.Tables("GRE Library").Rows(inc).Item(5).ToString 
    txtdc.Text = dataset.Tables("GRE Library").Rows(inc).Item(6).ToString 
    txtinfo.Text = dataset.Tables("GRE Library").Rows(inc).Item(7).ToString 
    txtpn.Text = dataset.Tables("GRE Library").Rows(inc).Item(8).ToString 
    txtsupport.Text = dataset.Tables("GRE Library").Rows(inc).Item(9).ToString 
    txtnews.Text = dataset.Tables("GRE Library").Rows(inc).Item(10).ToString 



    dataset.Tables("GRE Library").Rows(inc).Item(0) = txtname.Text 
    dataset.Tables("GRE Library").Rows(inc).Item(2) = txtrating.Text 
    dataset.Tables("GRE Library").Rows(inc).Item(3) = txtgenre.Text 
    dataset.Tables("GRE Library").Rows(inc).Item(4) = txtplatform.Text 
    dataset.Tables("GRE Library").Rows(inc).Item(5) = txtrd.Text 
    dataset.Tables("GRE Library").Rows(inc).Item(6) = txtdc.Text 
    dataset.Tables("GRE Library").Rows(inc).Item(7) = txtinfo.Text 
    dataset.Tables("GRE Library").Rows(inc).Item(8) = txtpn.Text 
    dataset.Tables("GRE Library").Rows(inc).Item(9) = txtsupport.Text 
    dataset.Tables("GRE Library").Rows(inc).Item(10) = txtnews.Text 


    dataadapter.Update(dataset, "GRE Library") 
    MsgBox("Library updated") 

End Sub 

Private Sub btnaddnew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnaddnew.Click 

    btncommit.Enabled = True 
    btnaddnew.Enabled = False 
    btnupdate.Enabled = False 
    btndelete.Enabled = False 

    txtname.Clear() 
    txtrating.Clear() 
    txtgenre.Clear() 
    txtplatform.Clear() 
    txtrd.Clear() 
    txtdc.Clear() 
    txtinfo.Clear() 
    txtpn.Clear() 
    txtsupport.Clear() 
    txtnews.Clear() 

End Sub 

Private Sub btnclear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnclear.Click 

    btncommit.Enabled = False 
    btnaddnew.Enabled = True 
    btnupdate.Enabled = True 
    btndelete.Enabled = True 

    inc = 0 
    NavigateRecords() 

End Sub 

Private Sub btncommit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncommit.Click 

    If inc <> -1 Then 

     Dim cb As New OleDb.OleDbCommandBuilder(dataadapter) 
     Dim datasetNewRow As DataRow 

     datasetNewRow = dataset.Tables("GRE Library").NewRow() 

     datasetNewRow.Item("Name") = txtname.Text 
     datasetNewRow.Item("PersonelRating") = txtrating.Text 
     datasetNewRow.Item("Genre") = txtgenre.Text 
     datasetNewRow.Item("Platform") = txtplatform.Text 
     datasetNewRow.Item("ReleaseDate") = txtrd.Text 
     datasetNewRow.Item("DevelopingCompany") = txtdc.Text 
     datasetNewRow.Item("GameInformation") = txtinfo.Text 
     datasetNewRow.Item("PersonalNotes") = txtpn.Text 
     datasetNewRow.Item("Support") = txtsupport.Text 
     datasetNewRow.Item("News") = txtnews.Text 


     dataset.Tables("GRE Library").Rows.Add(datasetNewRow) 

     dataadapter.Update(dataset, "GRE Library") 

     MsgBox("New item has been added to the library") 

     btncommit.Enabled = False 
     btnaddnew.Enabled = True 
     btnupdate.Enabled = True 
     btndelete.Enabled = True 

    End If 

End Sub 

Private Sub btndelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btndelete.Click 


    Dim cb As New OleDb.OleDbCommandBuilder(dataadapter) 
    dataset.Tables("GRE Library").Rows(inc).Delete() 
    MaxRows = MaxRows - 1 

    inc = 0 
    NavigateRecords() 
    dataadapter.Update(dataset, "GRE Library") 

End Sub 
+0

你可以發佈由commandBuilder創建的插入語句嗎? – Muse

回答

2

您可能需要使用.GetInsertCommand().CommandText方法&屬性檢索哪些生成器爲您創造並在屏幕上顯示,這樣你能確定是什麼問題,有可能是用你的方法。

+0

嗨CodeBuzz感謝您的回覆,我設法找到它爲什麼給我的錯誤。原因是,我的數據庫有一個我正在使用的圖像對象。我刪除它後,程序運行正常,所以即時猜測,當我嘗試添加數據時,它與該特定字段發生衝突。然而,問題是我需要這個領域,無論如何,我仍然可以保持 – Warchi

+0

@Warchi:那太棒了! – Muse

相關問題