使用vb.net更新数据库的问题,oledbdataadapter

问题描述 投票:0回答:2

在讨论了关于Stackoverflow和其他电路板的多个问题/答案之后,我仍然迷茫,为什么我不能更新Access数据库。自从我很早就开始工作,我就把它弄坏了!尽管MS拥有大量的文档,但与如何将oledbcommand与ExecuteReader或ExecuteNonQuery一起使用(我用来将数据加载到应用程序中)相比,我仍然对如何有效使用数据适配器有些困惑。

这里是我工作的更新部分:

 Public Function UpdateTable(strTable As String, dgDataTable As DataTable) As Boolean
        Dim DS As New DataSet
        dgDataTable.TableName = strTable
        DS.Tables.Add(dgDataTable)
        Using OpenCon = New OleDb.OleDbConnection(strConnectionString)
            Using DataAdapter As New OleDbDataAdapter("SELECT * FROM " & strTable, OpenCon)
                Dim DBcmd As OleDbCommandBuilder = New OleDbCommandBuilder(DataAdapter)
                DBcmd.QuotePrefix = "["
                DBcmd.QuoteSuffix = "]"
                DataAdapter.UpdateCommand = DBcmd.GetUpdateCommand()
                Try
                    OpenCon.Open()
                    DataAdapter.Fill(DS.Tables(strTable))
                    If DataAdapter.Update(DS.Tables(strTable)) > 0 Then
                        Return True
                    Else Return False
                    End If
                Catch exo As Exception
                    MessageBox.Show(exo.Message)
                    Return False
                End Try
            End Using
        End Using
    End Function

我的函数尝试使用数据表中的信息,从datagridview更新名称为strTable的现有Access表。每次运行都将更新检查> 0,并返回false,这表示应按语法进行操作(即无错误消息)。我已经跟踪了该表,并且该表具有它应该具有的所有数据(因此该信息已通过更新命令从网格正确传递)。我正在将其应用到数据集中,但不确定我是否真的需要它。

我正在通过update方法跟踪变量,我想我知道了为什么它不会更新,但是我不确定该怎么做。它提出的查询是这样的:

dgDataTable

Access表名称是RtoC,具有字段R,C,Type和unknown。我在想“?”没有填充导致查询只是不将数据应用回Access。我不确定如何设置这些项目。

在讨论了关于Stackoverflow和其他电路板的多个问题/答案之后,我仍然迷茫,为什么我不能更新Access数据库。自从我很早就开始工作以来,我就更感到尴尬了……

vb.net oledbconnection oledbcommand oledbdataadapter
2个回答
0
投票

问题是,该数据适配器的UPDATE [RtoC] SET [R] = ?, [C] = ?, [Type] = ?, [Unknown] = ? WHERE (([R] = ?) AND ([C] = ?) AND ([Type] = ?) AND ((? = 1 AND [Unknown] IS NULL) OR ([Unknown] = ?))) 方法在填充Fill之后在AcceptChanges上调用了DataTable,因此,当您调用Update时没有要保存的更改。


0
投票

我在处理数据库时采取了另一种策略,并在查找时发现了jmcilhinney在2014年提供的答案! [Bulk Insert From DataTable to Access Database

© www.soinside.com 2019 - 2024. All rights reserved.