vb.net - 从数据表更新 sqlite 文件

标签 vb.net sqlite datatable sql-update

旨在将表从 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/

相关文章:

mysql - vb net、mysql 和 Entity Framework 6 sbyte 类型的问题

javascript - 使用JS向SQLite插入字符串没有语法错误

php - 使用 PHP 支持多种数据库类型

javascript - Google 可视化数据表更改背景颜色

jsf-2 - JSF 2 DataTable 通过 AJAX 更新

mysql - 使用vb.net在Mysql中插入特定日期

c# - 如何打印.aspx页面的一部分?

c# - 如何在 DotNetNuke 中获取门户的当前登录 URL?

java - 在 Android 上搜索 SQLite 数据库

c# - 将 RSS feed 转换为 DataTable