添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
听话的机器猫  ·  sqlite wal 分析 - 掘金·  10 月前    · 
正直的跑步鞋  ·  VSCode 右上角Run ...·  1 年前    · 

坑爹的Microsoft.Data.Sqlite没有SQLiteDataAdapter,如何实现读取datatatable和dataset
VB源码,自行理解转换C#

#Region "DataTable"
    Private Function GetDataTable_CMD(SuperSQL As String, Optional timeOutSecound As Integer = 300, Optional UPData_command As SqliteCommand = Nothing) As System.Data.DataTable
        Dim NeedDispose As Boolean = If(IsNothing(UPData_command), True, False)
        If NeedDispose Then UPData_command = New SqliteCommand
        UPData_command.CommandType = CommandType.Text
        UPData_command.CommandTimeout = timeOutSecound
        UPData_command.Connection = cn
        UPData_command.CommandText = SuperSQL
        If cn.State = ConnectionState.Closed Then cn.Open()
        Using Reader = UPData_command.ExecuteReader
            Dim dt = GetDataTableFromReader(Reader)
            If NeedDispose Then UPData_command.Dispose()
            Return dt
        End Using
    End Function
    Function GetDataTable(ByVal SuperSQL As String, Optional timeOutSecound As Integer = 300) As System.Data.DataTable
        Return GetDataTable_CMD(SuperSQL, timeOutSecound)
    End Function
#End Region
#Region "DataSet"
    Private Function GetDataTableFromReader(reader As SqliteDataReader) As DataTable
        Dim dt As New DataTable
        Dim dtcols = reader.GetColumnSchema
        Dim colcount As Integer = dtcols.Count
        For Each col In dtcols
            dt.Columns.Add(col.ColumnName, col.DataType)
        Do While reader.Read()
            Dim nr = dt.NewRow
            For i As Integer = 0 To colcount - 1
                nr(i) = reader.GetValue(i)
            dt.Rows.Add(nr)
        Return dt
    End Function
    Function GetDataSet(ByVal SuperSQL As String, Optional timeOutSecound As Integer = 300) As System.Data.DataSet
        Using UPData_command As New SqliteCommand
            UPData_command.CommandType = CommandType.Text
            UPData_command.CommandTimeout = timeOutSecound
            UPData_command.Connection = cn
            UPData_command.CommandText = SuperSQL
            If cn.State = ConnectionState.Closed Then cn.Open()
            Using Reader = UPData_command.ExecuteReader()
                Dim hasResult = True
                Dim ds As New DataSet
                Dim index As Integer = 0
                Do While hasResult
                    Dim dt = GetDataTableFromReader(Reader)
                    dt.TableName = "table" & index
                    ds.Tables.Add(dt)
                    hasResult = Reader.NextResult
                    index += 1
                Return ds
            End Using
        End Using
    End Function
    Function GetDataSet(SuperSQL() As String, Optional timeOutSecound As Integer = 300) As System.Data.DataSet
        Dim sqlstr = String.Join(vbCrLf, SuperSQL)
        Return GetDataSet(sqlstr, timeOutSecound)
    End Function
    Function GetDataSet(SuperSQL() As List(Of String), Optional timeOutSecound As Integer = 300) As System.Data.DataSet
        Return GetDataSet(SuperSQL.ToArray, timeOutSecound)
    End Function
#End Region
                                    在桌面应用程序开发中,如果有数据存储的需要,同时对性能要求不是极高,又想应用能够随时随地运行,轻便小巧的SQlite自然是不二之选。本篇其实跟Avalonia没啥关系,SQLite的操作辅助类网上也是一大堆,这里就权当温故知新了。...
                                    System.Data.SQLitesqlite官方实现的ado.net。据说已经不更新了,但我看最新的包是2020年4月份。
Microsoft.Data.Sqlite是微软官方实现的ado.net。
两者的接口类似但Microsoft.Data.Sqlite没有实现SQLiteDataAdapter。不知道怎么往dataset中装,所以我还是使用了System.Data.SQLite。
另外,System.Data.SQLite需要SQLite.Interop.dll,不知道Microsoft.
                                    但是,Microsoft.Data.Sqlite 的最初目标是仍保持轻量级的新式特性。System.Data.SQLite 历史悠久,并且已发展成为具有 Visual Studio 工具的稳定且功能齐全的 ADO.NET 提供程序。在 2005 年,Robert Simpson 创建了System.Data.SQLite,这是 ADO.NET 2.0 的一个 SQLite 提供程序。Microsoft.Data.Sqlite 和 System.Data.SQLite 之间的最大区别是处理数据类型的方式。
                                    今天使用asp.net core + sqlite 创建了一个demo项目,本地运行一切正常。可以添加,修改,删除数据。经过分析:原来是因为在发布项目的时候,生成的sqlite数据文件并没有复制到发布目标文件中。解决办法:生成的数据库文件,右键属性=>复制到输出目录,选择始终复制。
如果要更改已加密数据库的密钥,请发出 PRAGMA rekey 语句。遗憾的是,SQLite 在 PRAGMA 语句中不支持参数。 请改用 quote() 函数防止 SQL 注入。
var command = connection.CreateCommand();
command.CommandText = "SELECT quote($newPassword);";
command.Parameters.AddWithValue("$newPassword", newPassword);
                                    连接字符串Connection strings12/13/2019本文内容用于指定如何连接到数据库的连接字符串。A connection string is used to specify how to connect to the database. Microsoft.Data.Sqlite 中的连接字符串遵循标准 ADO.NET 语法,形成以分号分隔的关键字和值的列表。Connection ...
                                        说明:本文的代码是基于Winform中举例的,经过实测可用。1.封装Sqlite操作类:sqLiteHelperusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
namespace TestSqlite.sq