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)
    }
}
相关推荐
天天要nx8 分钟前
D68【python 接口自动化学习】- python基础之数据库
数据库·python
Allen Bright11 分钟前
Redis安装
数据库·redis·缓存
门牙咬脆骨17 分钟前
【MYSQL】数据库日志 (了解即可)
数据库·mysql
ModelBulider18 分钟前
十三、注解配置SpringMVC
java·开发语言·数据库·sql·mysql
豆 腐27 分钟前
MySQL【四】
android·数据库·笔记·mysql
熊明才1 小时前
Ubuntu 22.04.4 LTS + certbot 做自动续签SSL证书(2024-11-14亲测)
数据库·网络协议·ssl
用户6279947182621 小时前
GBase 8a MPP Cluster基于审计日志的冷温热数据分析
数据库
用户6279947182621 小时前
快速搭建南大通用GBase 8s数据库SSC共享存储集群
数据库
FIN技术铺3 小时前
问:数据库的六种锁机制实践总结?
数据库·sql·oracle
程序员劝退师_4 小时前
优惠券秒杀的背后原理
java·数据库