网站首页 > 知识剖析 正文
以往,都是使用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 Sub
2、获取数据库连接
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 Function
3、获取记录集
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 Function
4、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-05-09 如何用DEEPSEEK开发网站-3:数据表建立
- 2025-05-09 MySQL常用命令汇总(mysql常用命令都有哪些)
- 2025-05-09 基于RocksDB编写一个简单的SQL数据库|得物技术
- 2025-05-09 Node.js 学习笔记:使用数据库(nodejs可以直接操作数据库)
- 2025-05-09 oracle用户创建及权限设置(oracle创建用户权限不足)
- 2025-05-09 一款Web3原生数据库:Tableland(web版数据库管理工具)
- 2025-05-09 结合换手率、MACD和均线系统的综合分析框架的策略实现
- 2025-05-09 使用PHP创建MySQL数据库和表格(使用php进行mysql数据库编程的基本步骤)
- 2025-05-09 面试官问:MySQL锁与事物隔离级别你知道吗?
- 2025-05-09 ORACLE 体系 - 12(上)(oracle系统)
- 最近发表
-
- 如何用DEEPSEEK开发网站-3:数据表建立
- MySQL常用命令汇总(mysql常用命令都有哪些)
- 基于RocksDB编写一个简单的SQL数据库|得物技术
- Node.js 学习笔记:使用数据库(nodejs可以直接操作数据库)
- oracle用户创建及权限设置(oracle创建用户权限不足)
- 一款Web3原生数据库:Tableland(web版数据库管理工具)
- 结合换手率、MACD和均线系统的综合分析框架的策略实现
- 使用PHP创建MySQL数据库和表格(使用php进行mysql数据库编程的基本步骤)
- 面试官问:MySQL锁与事物隔离级别你知道吗?
- ORACLE 体系 - 12(上)(oracle系统)
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)