坑爹的Microsoft.Data.Sqlite没有SQLiteDataAdapter,如何实现读取datatatable和dataset,C#,VBnet

坑爹的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)
        Next
        Do While reader.Read()
            Dim nr = dt.NewRow
            For i As Integer = 0 To colcount - 1
                nr(i) = reader.GetValue(i)
            Next
            dt.Rows.Add(nr)
        Loop
        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
                Loop
                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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值