旨在将表从 db3 (sqlite) 文件加载到数据表中。然后将此数据表加载到 datagridview 中以允许对其进行编辑。然后我想将编辑后的数据表保存回原始 db3 文件 - 覆盖任何更改。
我已经将表从 db3 + 导入到 DGV 中了。我不会在 dgv 数据表周围包含任何代码。只需要如何将此数据写回 db3 文件。我该怎么做呢?代码:
Imports System.Data.SQLite
Public Class DBOps
Public Function ImportGEDb3(Filepath As String) As DataTable
Dim dt As New DataTable("Data")
Dim cnn As New SQLiteConnection("Data Source='" & Filepath & "'")
cnn.Open()
Dim mycommand As New SQLiteCommand(cnn)
mycommand.CommandText = "Select * from Data"
Dim reader As SQLiteDataReader = mycommand.ExecuteReader()
dt.Load(reader)
reader.Close()
cnn.Close()
Return dt
End Function
Public Sub SaveGEDb3(dt as datatable, filepath as string)
' save passed datatable to File above
end sub
end class
最佳答案
SQLiteDataAdapter
类是此类更新的最简单选择。该类的方法 Update 扫描传递的 DataTable,并对 RowState 属性不同于 DataRowState.Unchanged 的每一行执行相应的 INSERT、DELETE、UPDATE 命令(如果 SELECT 命令从 DataTable 中提取主键)。因此,假设您的 SELECT * FROM Data 还返回表的主键,您可以更改代码以利用 SQLiteDataAdapter 功能
Imports System.Data.SQLite
Public Class DBOps
' Global because you create it in the ImportGEDb3 and use it in the SaveGEDB3 '
Private daImport As SQLiteDataAdapter
Public Function ImportGEDb3(Filepath As String) As DataTable
Dim dt As New DataTable("Data")
daImport = new SQLiteDataAdapter("Select * from Data", "Data Source='" & Filepath & "'")
daImport.Fill(dt)
' This is critical, it is the SQLiteCommandBuilder that takes '
' the SQLiteDataAdapter SELECT statement and builds the required'
' INSERT,UPDATE,DELETE commands.'
Dim builder = new SQLiteCommandBuilder(daImport)
Return dt
End Function
Public Sub SaveGEDb3(dt as datatable)
if daImport IsNot Nothing Then
daImport.Update(dt)
End If
End Sub
End class
关于vb.net - 从数据表更新 sqlite 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37172364/