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)
    }
}
相关推荐
麦壳饼6 分钟前
SonnetDB 5.0 正式发布:增强 SQL 与事务,开放九模型 MCP 读写
数据库·人工智能·sql·sonnetdb
Decay__9 小时前
18_MySQL 智能巡检方案 —— 巡检项清单 / 一键巡检脚本 / 健康评分
运维·数据库·sql·mysql·架构
java_logo9 小时前
Docker 部署 Liquibase:轻松搭建数据库变更管理
数据库·docker·容器·数据库管理·liquibase·轩辕镜像·数据库变更
凤凰院凶涛QAQ11 小时前
《MySQL内核拆解:从SQL到InnoDB》(四) : 联合查询 & 视图
数据库·sql·mysql
码农小河6611 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
张小姐的猫11 小时前
【MySQL】访问 & 数据流动原理
android·数据库·mysql·adb·1024程序员节
这个DBA有点耶15 小时前
信创场景下数据同步软件怎么选?对比开源CDC与原生闭环工具的结构性差异
数据库·mysql·架构
多客:duokelijie15 小时前
代练订单系统选型思路:跨品类游戏接入、订单分层管理、自动结算逻辑拆解!
数据库·mysql·微信小程序·前端框架·uni-app·php·持续部署
PingCAP16 小时前
平凯星辰上榜!2026 年胡润全球独角兽企业
数据库