我已經從我的應用程序中提取了以下代碼。我正在嘗試創建一個新目錄,在其中放置一個 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)
}

三國紛爭
TA貢獻1804條經驗 獲得超7個贊
您需要使用該函數Exec
而不是Query
創建表。查看這些函數的文檔:
Query executes a query that returns rows, typically a SELECT. The args are for any placeholder parameters in the query.
Exec executes a query without returning any rows. The args are for any placeholder parameters in the query.
添加回答
舉報
0/150
提交
取消