使用accdb(Access)的vb.net DataGridView中的OleDbDataAdapter异常

时间:2013-10-11 06:39:07

标签: vb.net datagridview oledbdataadapter

为什么它告诉我“更新无法找到TableMapping ['DiscTable']或DataTable'DiscTable'。” 在这一行:

da.Update(ds,“DiscTable”)

我尝试使用da.Update(ds)并崩溃了。无论如何,表中的更新是成功的!?!?如果我删除它的确定!

Private Sub SelectBtn_Click(sender As Object, e As EventArgs) Handles SelectBtn.Click
    Dim ConnString As String
    Dim SQLStr As String
    Dim OleDBConn As New OleDbConnection()
    Dim OleDBCmd As New OleDbCommand()
    Dim OleDBdr As OleDbDataReader
    Dim ds As New DataSet
    Dim IsChecked As Boolean = CBool(DiscDG.Rows(SelectedRowIndex).Cells(SelectedColIndex).Value)

    ConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=RegDB.accdb;Persist Security Info=False;"

    SQLStr = "UPDATE DiscTable " +
             "SET LectionsTeacher='" + TeacherLblValue + "', LectionsYN=Yes " +
             "WHERE DiscName='" + SelectedRowFirstCell + "'"

    OleDBConn.ConnectionString = ConnString
    OleDBConn.Open()

    OleDBCmd.Connection = OleDBConn
    OleDBCmd.CommandText = SQLStr
    OleDBdr = OleDBCmd.ExecuteReader

    Dim da As New OleDbDataAdapter(SQLStr, OleDBConn)
    da.Update(ds, "DiscTable")

    OleDBdr.Close()
    OleDBConn.Close()
End Sub

1 个答案:

答案 0 :(得分:0)

我认为您的问题是,由于数据集为空,因此没有名为“DiscTable”的表。我认为你已经在某个时候执行了一个“SELECT”查询,它会给你一组你想要更新的内容。该数据集是您应该进行更新的数据集。

您现在正在做的事情毫无意义,您也可以执行“SELECT”查询。这是因为您尝试使用数据填充空数据集而不是更新现有数据集。然后作为额外的奖励,你填充ds是一个本地对象。当您到达End Sub时,数据集已消失。所以你实际上根本没有尝试更新它。