为了账号安全,请及时绑定邮箱和手机立即绑定

用 go 实例化一个 sqlite 数据库?

用 go 实例化一个 sqlite 数据库?

Go
潇潇雨雨 2021-12-20 19:24:18
我已经从我的应用程序中提取了以下代码。我正在尝试创建一个新目录,在其中放置一个 sqlite 数据库,然后在数据库中创建一个表。目前它创建目录,一个用于数据库存在的文件,并且它运行没有任何错误。但是,db 文件是空的。我无法弄清楚为什么它是空的。有谁知道如何修改此代码以使内容保留在数据库中?package mainimport (    "os"    "database/sql"    "fmt"    _ "github.com/mattn/go-sqlite3")func main() {    os.MkdirAll("./data/1234", 0755)    os.Create("./data/1234/data.db")    db, err := sql.Open("sqlite3", "./data/1234/data.db")    if err != nil {        fmt.Println(err)        os.Exit(1)    }    _, err = db.Query("CREATE TABLE `customers` (`till_id` INTEGER PRIMARY KEY AUTOINCREMENT, `client_id` VARCHAR(64) NULL, `first_name` VARCHAR(255) NOT NULL, `last_name` VARCHAR(255) NOT NULL, `guid` VARCHAR(255) NULL, `dob` DATETIME NULL, `type` VARCHAR(1))")    if err != nil {        fmt.Println(err)        os.Exit(1)    }    db.Close()}
查看完整描述

2 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

您没有关闭数据库,因此更改不会刷新到数据库文件。


确保您执行db.Close().


然后您需要使用该Exec方法,而不是Query修改数据库。


_, err = db.Exec("CREATE TABLE `customers` (`till_id` INTEGER PRIMARY KEY AUTOINCREMENT, `client_id` VARCHAR(64) NULL, `first_name` VARCHAR(255) NOT NULL, `last_name` VARCHAR(255) NOT NULL, `guid` VARCHAR(255) NULL, `dob` DATETIME NULL, `type` VARCHAR(1))")

if err != nil {

    log.Fatal(err)

}


查看完整回答
反对 回复 2021-12-20
?
三国纷争

TA贡献1804条经验 获得超7个赞

您需要使用该函数Exec而不是Query创建表。查看这些函数的文档:

func (*DB) 查询

Query executes a query that returns rows, typically a SELECT. The args are for any placeholder parameters in the query.

func (*DB) 执行

Exec executes a query without returning any rows. The args are for any placeholder parameters in the query.



查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 425 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号