VB.NET 对SQLite轻型数据库操作的SQLiteHelp类

2019-07-22 14:54:12 浏览数 (1)

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起MysqlPostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。

SQLiteHelp类源代码:

代码语言:javascript复制
''***************************************************************
''***************************************************************
''***由于SQL是嵌入式小型数据库,所以只能把数据库放在程序根目录***
''**不能指定文件路径,需要引用System.Data.SQLite,在nuget可以获取
''***更多精彩内容请关注微信公众号:VB小源码 *********************
''***获取更多教程请加QQ群:344402874 *****************************
''***************************************************************
''***2019年04月20日 星期六 **************************************
''***************************************************************

Imports System.Data.SQLite
''' <summary>
''' SqlLite数据连接类
''' </summary>
Public Class Class_sql_lite
    ''定义数据库名称
    Private Shared ReadOnly db_name As String = "vbxym.db"
    ''定义数据库连接
    Private Shared ReadOnly CN As SQLiteConnection = New SQLiteConnection("Data Source=" & db_name & ";Pooling=true;FailIfMissing=false")

    ''' <summary>
    ''' 创建sqllite数据库
    ''' </summary>
    ''' <param name="dbname">数据库名称</param>
    ''' <returns></returns>
    Public Shared Function Create_db(ByVal dbname As String) As Boolean
        '判断数据库是否已经打开,如果已打开就关闭
        If CN.State = ConnectionState.Open Then CN.Close()
        '定义数据库名称
        Dim SQLDB As String = dbname & ".db"
        Try
            '判断根目是否已经存在数据库,存在则删除
            If IO.File.Exists(SQLDB) = True Then IO.File.Delete(SQLDB)
            '创建数据库
            SQLiteConnection.CreateFile(SQLDB)
        Catch ex As Exception
            MsgBox("数据库创建失败:" & ex.Message)
        End Try
        '判断是否创建成功,成功返回真,否则返回假
        If IO.File.Exists(SQLDB) = True Then
            Return True
        Else
            Return False
        End If
    End Function

    ''' <summary>
    ''' 返回记录集
    ''' </summary>
    ''' <param name="SQL">sql语句</param>
    ''' <returns></returns>
    Public Shared Function GET_SQL_RES(ByVal SQL As String) As DataTable
        '判断数据库是否已经打开,如果已关闭就打开
        If CN.State <> ConnectionState.Open Then CN.Open()
        '定义数据库适配器
        Dim SlAd As New SQLiteDataAdapter(SQL, CN)
        '定义数据集
        Dim ds As New DataSet
        '通过适配器填充数据到数据集
        SlAd.Fill(ds, "SQL_LITE")
        '定义数据表,并把数据集填充进数据表
        Dim DT As DataTable = ds.Tables("SQL_LITE")
        '返回数据表
        GET_SQL_RES = DT
        '判断数据库是否已经打开,如果已打开就关闭
        If CN.State = ConnectionState.Open Then CN.Close()
    End Function

    ''' <summary>
    ''' 执行SQL命令
    ''' </summary>
    ''' <param name="sql">sql语句</param>
    ''' <returns></returns>
    Public Shared Function Cmd_sqllite(ByVal sql As String) As Boolean
        '判断数据库是否已经打开,如果已关闭就打开
        If CN.State <> ConnectionState.Open Then CN.Open()
        '定义数据库命令,并创建命令
        Dim cmd As SQLiteCommand = CN.CreateCommand()
        '定义数据库指令
        cmd.CommandText = sql
        Dim result As Object = Nothing
        Try
            '返回执行参数
            result = cmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox("sql命令错误:" & ex.Message)
        End Try

        '参数等于0则失败,否则成功
        If result <> 0 Then
            Return True
        Else
            Return False
        End If
        '释放数据库指令
        cmd.Dispose()
        '判断数据库是否已经打开,如果已打开就关闭
        If CN.State = ConnectionState.Open Then CN.Close()
    End Function

End Class

示例源代码:

代码语言:javascript复制

Public Class Form1


    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        Sam()
    End Sub


    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        If Class_sql_lite.Cmd_sqllite("DELETE FROM TB_USER WHERE rowid = '" & InputBox("输入要删除的ID号") & "'") = False Then MsgBox("记录删除失败!")

    End Sub



    Sub Sam() '示例

        If Class_sql_lite.Create_db("VBXYM") = False Then MsgBox("数据库创建失败!")

        Class_sql_lite.Cmd_sqllite("CREATE TABLE main.tb_user (`ID` Integer Not NULL PRIMARY KEY AUTOINCREMENT, `USER` TEXT Not NULL, `PASS` TEXT Not NULL, `TIME` TEXT Not NULL)")

        If Class_sql_lite.Cmd_sqllite("INSERT INTO TB_USER(USER, PASS, TIME) VALUES ('vb小源码', '123456', '" & Now & "')") = False Then MsgBox("插入数据失败!")

        DataGridView1.DataSource = Class_sql_lite.GET_SQL_RES("SELECT * FROM tb_user")

        DataGridView1.Refresh()

    End Sub
End Class

0 人点赞