无法映射表

时间:2014-02-20 17:17:40

标签: vb.net

您好我不断收到此错误无法找到表映射[表]或数据表。我使用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

1 个答案:

答案 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