2012-11-13 28 views
1

试图让这一点代码输入一个玩家的名字填入数据行,然后在数据库中更新它。它目前在数据行更新,但我无法获得更新数据库的代码。你能帮助欢呼吗?VB.NET和数据库

Using da As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM Team1", con) 
      da.Fill(ds, "BPAWA") 

      txtFirstName.Text = ds.Tables("BPAWA").Rows(0).Item(1) 

      T1P1 = InputBox("Name of Player 1") 

      ds.Tables("BPAWA").Rows(0).Item(1) = T1P1 

      ds.Tables("BPAWA").AcceptChanges() 
      ds.AcceptChanges() 

      da.Update(ds, "BPAWA") 
      MsgBox("Player 1 Added Successfully") 
     End Using 

回答

1

您OleDbDataAdapter的未链接到一个实际的命令没有你似乎在代码中创建的适配器。 See an example here

缺少这样

Dim da As OleDbDataAdapter = new OleDbDataAdapter(selectCommand, connection); 

一条线,所以我可以用这种方式重写代码(避免全局变量)

Private Sub btnLoad_Click(sender As Object, e As EventArgs) Handles btnLoad.Click 
    Dim dbProvider As String = "PROVIDER=microsoft.ace.oledb.12.0;" 
    Dim dbSource As String = "Data Source = C:\BP_Table_Project.accdb" 
    Dim ds as DataSet = new DataSet() 

    Using con As OleDbConnection = new OleDbConnection() 
     con.ConnectionString = dbProvider & dbSource 
     con.Open() 

     MsgBox("Connection With Database Established", 0, "Database Connection") 

     Using da as OleDbDataAdapter = new OleDbDataAdapter("SELECT * FROM Team1", con) 
      Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(da) 
      da.Fill(ds, "BPAWA") 
      ...... 

      da.Update(ds, "BPAWA") 
      MsgBox("Player 1 Added Successfully") 
     End Using 
     MsgBox("Connection With Database Closed", 0, "Database Connection") 
    End Using 
End Sub 
+0

您好史蒂夫我试过你了,它给我带来了一大堆封装错误? –

+0

用简单的数据库进行测试并更改了一些声明。检查更新的答案 – Steve

+0

嘿史蒂夫,感谢所有帮助到目前为止。它现在运行,现在运行检查的错误显示数据集中的名称已更改。虽然它改变了数据库中的名字。我需要运行一个SQL命令吗?问候 –

-1

之前da.Update(ds, "BPAWA")

地址:

ds.Tables("BPAWA").AcceptChanges() 
ds.AcceptChanges() 
+0

错误。如果您调用AcceptChanges,那么RowState属性将更改为'Unchanged'并且不会将任何内容保存到数据库 – Steve