您好我不断收到此错误无法找到表映射[表]或数据表。我使用Visual Basic 2013桌面,我有一个名为crap的Microsoft Access Table表,我的访问文件的名称是Student.accdb。我的数据集叫做StudentDataSet1。我通过Database Explorer添加了数据库,状态为Open。我不是程序员,我只是在玩Microsoft Access和VB。我也输入了连接字符串,它仍然无法正常工作。有人可以帮忙吗?
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Fill retrieves rows from the data source by using the SELECT statement
Dim con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Student.accdb")
Dim da As OleDb.OleDbDataAdapter
Dim sql As String
Dim ds As New DataSet
sql = "Select * from crap "
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "AddressBook")
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim da As OleDb.OleDbDataAdapter
da = New OleDb.OleDbDataAdapter
Dim Department As String
Dim i, ID As Integer
Dim rw As DataRow
'Add a new row to the Student table.
rw = StudentDataSet1.Tables(0).NewRow
ID = InputBox("Enter your ID")
Department = InputBox("Enter your Department")
rw.Item("ID") = ID
rw.Item("Department") = Department
Try
StudentDataSet1.Tables(0).Rows.Add(rw)
'Update the Student table in the testdb database.
i = da.Update(StudentDataSet1)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
'Displays number of rows updated.
MessageBox.Show("no of rows updated=" & i)
End Sub
答案 0 :(得分:0)
填充DataSet时,您可以选择为加载的数据表指定名称。您已将名称命名为“AddressBook”。当您稍后在代码
中调用Update方法时,应再次给出此名称 i = da.Update(StudentDataSet1, "AddressBook")
当您调用Update方法时,应考虑另一个问题。如果没有执行这些操作的命令,OleDbDataAdapter通常无法更新/删除/插入新记录。您可以编写自己的命令并设置DataAdapter的InsertCommand,UpdateCommand和DeleteCommand属性,但是对于像上面那样的单表查询,您可以使用一个方便的类来创建这些命令,因为您提供的是您的SELECT COMMAND返回的主要关键字表
' Move it at the global scope here to reuse the same adapter when you call the update
Dim da As OleDb.OleDbDataAdapter
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim sql = "Select * from crap "
Dim ds As New DataSet
Using con = New OleDb.OleDbConnection(.....)
da = New OleDb.OleDbDataAdapter(sql, con)
Dim builder = new OleDb.OleDbCommandBuilder(da)
da.InsertCommand = builder.GetInsertCommand()
da.UpdateCommand = builder.GetUpdateCommand()
da.DeleteCommand = builder.GetDeleteCommand()
da.Fill(ds, "AddressBook")
End Using
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Use the global adapter created at the form load
' Dim da As OleDb.OleDbDataAdapter
' da = New OleDb.OleDbDataAdapter
......
Try
i = da.Update(StudentDataSet1, "AddressBook")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
MessageBox.Show("no of rows updated=" & i)
End Sub