SQLite 可以随可执行文件部署在用户机器吗

答案是:可以的。

sqlite 本身就是嵌入式的SQL数据库引擎,不需要单独的服务器进程。sqlite 直接读取和写入普通磁盘文件,sqlite 的整个数据库(所有表、索引、触发器等)都包含在单个磁盘文件中。所以 sqlite 很适合开发本地应用程序,可以将数据库嵌入到可执行文件中,运行可执行文件即可在用户计算机中生成 sqlite 数据库文件供应用程序使用。

下面提供 Go 语言代码作为实验示例:

先使用 go get 安装 go-sqlite3 (sqlite 的 Go 驱动),再在 Go 模块中使用 go build 生成可执行文件,当运行可执行文件时,便会在可执行文件所在文件夹生成 sqlite 数据库文件 .db

ps:此处为方便管理 .db 文件,所以将其生成路径定位在可执行文件所在文件夹。但在实际生产中,应该放置于用户不常接触到的文件夹中,如 MacOS 的 ~/Library/Application Support/ 或 Windows 的 AppData 目录。

go 复制代码
package main

import (
    "database/sql"
    "fmt"
    _ "github.com/mattn/go-sqlite3"
)

func main() {
    db, err := sql.Open("sqlite3", "./example.db")
    if err != nil {
        fmt.Println("Error opening database: ", err)
        return
    }
    defer db.Close()

    // 创建表
    sqlStmt := `CREATE TABLE IF NOT EXISTS userinfo (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        username TEXT NOT NULL,
        departname TEXT,
        created DATE
    );`
    _, err = db.Exec(sqlStmt)
    if err != nil {
        fmt.Printf("%q: %s\n", err, sqlStmt)
        return
    }

    // 插入数据
    _, err = db.Exec("INSERT INTO userinfo(username, departname, created) VALUES(?,?,?)", "john", "IT", "2023-04-01")
    if err != nil {
        fmt.Println("Error inserting data: ", err)
        return
    }

    // 查询数据
    rows, err := db.Query("SELECT id, username FROM userinfo")
    if err != nil {
        fmt.Println("Error querying data: ", err)
        return
    }
    defer rows.Close()
    for rows.Next() {
        var id int
        var username string
        err = rows.Scan(&id, &username)
        if err != nil {
            fmt.Println("Error reading row: ", err)
            continue
        }
        fmt.Println("ID:", id, "Username:", username)
    }
}
相关推荐
GuWenyue2 小时前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
Miao121313 小时前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践
大数据·数据库·人工智能
CodexDave4 小时前
MySQL事务隔离级别与MVCC机制解析
前端·数据库·mysql·nginx·性能优化·负载均衡
碎光拾影4 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
曾阿伦4 小时前
MongoDB 查询语句备忘手册
数据库·mongodb
一叶龙洲4 小时前
wslg打开Ubuntu24.04默认打开图形界面
linux·服务器·数据库·ubuntu
CCPC不拿奖不改名4 小时前
大模型推理架构与开源生态知识整理
数据库·windows·python·架构·langchain·开源·github
爬也要爬着前进6 小时前
redis主从搭建
数据库·redis·缓存
@Mike@6 小时前
02-数据库学习笔记(SQL引擎)
数据库·笔记·学习
踏月的造梦星球7 小时前
达梦数据库执行计划与性能分析入门:EXPLAIN、AUTOTRACE 与 ET
服务器·数据库·oracle