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 目录。

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)
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/758581.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【鸿蒙学习笔记】位置设置

官方文档:位置设置 目录标题 align:子元素的对齐方式direction:官方文档没懂,看图理解吧 align:子元素的对齐方式 Stack() {Text(TopStart)}.width(90%).height(50).backgroundColor(0xFFE4C4).align(Alignment.TopS…

数据分析的线上云端数据库搭建及Excel和Tableau连接

数据分析的线上云端数据库搭建及Excel和Tableau连接 SQL基础知识 线上SQL训练: SQlZOO: https://www.sqlzoo.net/wiki/SQL_Tutorial 牛客网SQL真题:https://www.nowcoder.com/ta/sql select,from,where, order by, limit, group by, having, substr(),…

windows 本地ES 7.11.0 版本集群搭建

1.先下载JDK ,建议下载JDK11. 2.下载ES Windows安装包 7.11.0下载 3.下载完成后,在本地解压三份,分别取名 node1,node2,node3 4.若启动一直报端口占用,这修改 每个文件夹下bin/elasticsearch.bat文件,没有则跳过 在…

MySQL高级-MVCC- readview介绍

文章目录 1、介绍2、ReadView中包含了四个核心字段:3、版本链数据的访问规则:4、不同的隔离级别,生成ReadView的时机不同: 1、介绍 ReadView(读视图)是 快照读 SQL执行时MVCC提取数据的依据,记录…

基于bootstrap的12种登录注册页面模板

基于bootstrap的12种登录注册页面模板,分三种类型,默认简单的登录和注册,带背景图片的登录和注册,支持弹窗的登录和注册页面html下载。 微信扫码下载

[Redis]主从模式

启动主从复制 由于我们只有一台机器,所以我们只能在机器上开多个redis程序来演示不同的机器 因为一个端口号只能被一个进程绑定,所以我们需要修改配置,绑定不同的端口号,并且还要修改工作目录(数据持久化的位置&#…

第二天:ALOAM前端讲解【第1部分】

第二天:ALOAM前端讲解 目标: 熟悉 ALOAM基本原理与代码框架,快速熟悉代码ALOAM效果 内容: LOAM论文论文精讲整体代码框架介绍前端特征提取,点到线、点到面ICP代码讲解ALOAM精讲 一、ALOAM整体架构 LOAM主要包含两个模块,一个是Lidar Odometry,即使用激光雷达做里程计计…

Qt项目天气预报(8) - 绘制温度曲线 + 回车搜索(最终篇)

全部内容在专栏: Qt项目 天气预报_mx_jun的博客-CSDN博客 目录 绘制温度曲线 事件过滤器在子控件上绘图 子控件下载事件过滤器 事件过滤器进行绘图 - eventFilter 画初步高温曲线 画初步低温曲线 效果演示 画低温曲线 画高温曲线 效果演示 按下回车搜索: …

ETAS工具导入DEXT生成Dcm及Dem模块(二)

文章目录 前言DcmDcmDsdDcmDslDcmDspDcmPageBufferCfgDem报错解决总结前言 之前一篇文章介绍了导入DEXT之后在cfggen之前的更改,cfggen完成之后,就可以生成dcm,dem的配置了,但生成完配置后,如果直接生成BSW代码,会报错。本文介绍在cfggen完成后,生成BSW代码前的修改 Dc…

Go环境安装---附带每一步截图

Windows环境 Go安装包下载 下载后直接安装步骤按照即可。 测试 winR 输入cmd 在命令行输出go version可以看到自己的版本。 go env 查看环境变量 在桌面创建hello.go的文件 编写代码。注意,编码必修是UTF-8 在命令行输入路径刚刚代码所在的路径&#x…

【从零开始学架构 架构基础】三 架构设计的复杂度来源:高可用复杂度来源

架构设计的复杂度来源其实就是架构设计要解决的问题,主要有如下几个:高性能、高可用、可扩展、低成本、安全、规模。复杂度的关键,就是新旧技术之间不是完全的替代关系,有交叉,有各自的特点,所以才需要具体…

tomcat8.5在windows下运行出现日志中文乱码

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

八月份的护网行动如何参加?

护网行动背景 什么是“护网行动”? 指挥机构∶由公安机关统一组织的"网络安全实战攻防演习"。 护网分为两级演习∶公安部对总部,省厅对省级公司。 什么是“实战攻防演习” 每支队伍3-5 人组成,明确目标系统,不限制攻…

SerDes介绍以及原语使用介绍(4)ISERDESE2原语仿真

文章目录 前言一、iserdese2_module模块二、oserdese2_module模块三、顶层模块四、仿真结果分析 前言 上文详细介绍了ISERDESE2原语的使用,本文根据仿真对ISERDESE2原语的使用进一步加深印象。在仿真时,与OSERDESE进行回环。 一、iserdese2_module模块…

【C语言】指针剖析(2)

©作者:末央& ©系列:C语言初阶(适合小白入门) ©说明:以凡人之笔墨,书写未来之大梦 目录 一、数组名1.概念2.sizeof和&里面的数组名sizeof& 二、使用指针访问数组三、一维数组传参本质四、指针数组1.概念实例(模拟二维数…

C语言中常用的运算符、表达式和语句

C语言是一种通用的、高级的编程语言,其历史可以追溯到20世纪60年代末至70年代初。C语言最初是由丹尼斯里奇(Dennis Ritchie)在贝尔实验室为开发UNIX操作系统而设计的。它继承了许多B语言的特性,而B语言则是由迷糊老师(…

C#基于SkiaSharp实现印章管理(3)

本系列第一篇文章中创建的基本框架限定了印章形状为矩形,但常用的印章有方形、圆形等多种形状,本文调整程序以支持定义并显示矩形、圆角矩形、圆形、椭圆等4种形式的印章背景形状。   定义印章背景形状枚举类型,矩形、圆形、椭圆相关的尺寸…

springboot宠物医院管理系统-计算机毕业设计源码07221

目 录 1 绪论 1.1 选题背景和意义 1.2国内外研究现状 1.3论文结构与章节安排 2 宠物医院管理系统系统分析 2.1 可行性分析 2.1.1技术可行性分析 2.1.2 操作可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分…

docker配置国内镜像加速器

1、搜索阿里云 2、搜索容器镜像服务 点击管理控制台 配置镜像加速器

uniapp部署服务器,uniapp打包H5部署服务器,uniapp将config.js抽离

目录 步骤一.在static文件夹下新建config.js文件 config.js文件说明 在config.js中放入使用的请求的接口地址,资源路径等 congfig.js中的变量在页面中如何使用 步骤二.manifest.json配置 1.在项目根目录(与app.vue同级)创建template.h5.html文件 2.在manifest.json配置刚刚创…