【问题标题】:OleDbDataAdapter exception in vb.net DataGridView using accdb (Access)使用 accdb (Access) 的 vb.net DataGridView 中的 OleDbDataAdapter 异常
【发布时间】:2013-10-11 17:39:07
【问题描述】:

为什么它告诉我“更新无法找到 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

【问题讨论】:

    标签: vb.net datagridview oledbdataadapter


    【解决方案1】:

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

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

    【讨论】:

    • 我有表 DiscTable 及其填充的数据。我使用 Select onFormLoad 并用它填充数据网格(使用 SELECT 语句)。然后我在 DataGrid 上做一些事情(输入文本检查复选框..)并想要更新表格。
    • 但是您正在更新一个空数据集。您没有更新使用 select 语句填充的数据集。对象 ds 不知道 DiscTable,因为它是空的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 2015-05-13
    相关资源
    最近更新 更多