网站首页 > 教程文章 正文
以往,都是使用access作为数据库,但随着数据量的增加,有两个不足:
1、速度慢,查询数据需要约2秒钟的等待。
2、容量小,主要是潜在担忧。
所以,改用同为文件型数据库的SQLite,在保持灵活性的同时,速度、容量的问题已经基本解决,可以满足亿条这样量级的基本操作。
使用时,需要提前安装SQLite ODBC驱动。
安装成功后:
相关Sub、Function如下:
1、动态创建数据库文件
Sub CreateSQLiteDatabaseWithTwoTables(strFileName As String)
Dim conn As Object
Dim connStr As String
Dim createTable1SQL As String
Dim createTable2SQL As String
' 创建连接对象
Set conn = CreateObject("ADODB.Connection")
' 设置连接字符串
connStr = "DRIVER=SQLite3 ODBC Driver;Database=" & strFileName & ";"
' 打开连接
conn.Open connStr
' 创建表1 SQL语句
createTable1SQL = "CREATE TABLE 数据表 (" & _
"ID INTEGER PRIMARY KEY AUTOINCREMENT," & _
"单位名称 TEXT NOT NULL," & _
"指标名称 TEXT," & _
"数值 DOUBLE);"
' 执行创建表1操作
conn.Execute createTable1SQL
' 创建表2 SQL语句
createTable2SQL = "CREATE TABLE 数据表2 (" & _
"ID INTEGER PRIMARY KEY AUTOINCREMENT," & _
"单位名称 TEXT NOT NULL," & _
"指标名称 TEXT," & _
"数值 DOUBLE);"
' 执行创建表2操作
conn.Execute createTable2SQL
' 关闭连接
conn.Close
Set conn = Nothing
MsgBox "指定的数据库和表,已创建成功!"
End Sub2、获取数据库连接
Function GetSQLiteConnection(strFileName As String) As Object
Dim conn As Object
Dim connStr As String
' 检查文件是否存在
If Dir(strFileName) = "" Then
' 文件不存在,创建数据库和表
CreateSQLiteDatabaseWithTwoTables strFileName
End If
' 创建连接对象
Set conn = CreateObject("ADODB.Connection")
' 设置连接字符串
connStr = "DRIVER=SQLite3 ODBC Driver;Database=" & strFileName & ";"
' 打开连接
conn.Open connStr
' 返回连接对象
Set GetSQLiteConnection = conn
End Function3、获取记录集
Function GetSQLiteRecordset(conn As Object, strSQL As String) As Object
Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")
' 打开Recordset
rs.Open strSQL, conn, adOpenStatic, adLockReadOnly
' 返回Recordset对象
Set GetSQLiteRecordset = rs
End Function4、SQL执行程序
Sub RunSQLiteSQL(conn As Object, strSQL As String)
Dim cmd As Object
Set cmd = CreateObject("ADODB.Command")
' 设置命令对象的连接
cmd.ActiveConnection = conn
' 设置SQL命令文本
cmd.CommandText = strSQL
' 执行SQL命令
cmd.Execute
' 清理资源
Set cmd = Nothing
End Sub在系列数据操作后,可以检测一下:
Sub TryIt()
Dim conn As Object
Dim rs As Object
Dim strFileName As String
Dim strSQL As String
' SQLite数据库文件路径
strFileName = "D:\Temp.sqlite"
' 获取连接对象
Set conn = GetSQLiteConnection(strFileName)
' SQL查询字符串
strSQL = "SELECT * FROM 数据表"
' 获取Recordset对象
Set rs = GetSQLiteRecordset(conn, strSQL)
' 遍历Recordset对象并打印结果
Do While Not rs.EOF
Debug.Print rs.Fields("ID").value & ", " & rs.Fields("单位名称").value
rs.MoveNext
Loop
' 关闭Recordset和连接
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
End Sub
猜你喜欢
- 2025-09-23 5分钟快速掌握在Python使用SQLite数据库,
- 2025-09-23 ExcelVBA 连接 MySQL 数据库_vba怎么连接数据库sql
- 2025-09-23 Python+SQLite 终极实战指南:零基础到高效开发
- 2025-09-23 搭建electron+vite框架的三种方法
- 2025-09-23 免装环境!SQLite 可视化神器,Java 开发者速通指南
- 2025-09-23 没想到一个Trae的提示词工具,居然会有这么多人喜欢?
- 2025-09-23 SQLite线程模式讲解_简述sqlite3的功能
- 2025-09-23 Qt编程进阶(21):Qt操作SQLite数据库及实例
- 2025-09-23 Python (Sqlite)用事务写多表数据的简单例子
- 2025-09-23 SQLite被曝漏洞 90%以上设备可能受影响
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)
