亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用 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 關注
  • 312 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號