事先安装go开发环境,并设置环境变量。
C:\d>set GOROOT=C:\d\gowin\go
C:\d>set GOPATH=c:\d\goprj
C:\d>set path=%GOROOT%\bin;%GOPATH%\bin;%PATH%
C:\d\goprj>go env -w GOPROXY=https://goproxy.cn,direct
-
获取sqlite驱动
C:\d\goprj>go get github.com/mattn/go-sqlite3
go: downloading github.com/mattn/go-sqlite3 v1.14.52
go: added github.com/mattn/go-sqlite3 v1.14.52
编写go程序
go
package main
import (
"database/sql"
"io/ioutil"
"log"
_ "github.com/mattn/go-sqlite3"
)
func main() {
db, err := sql.Open("sqlite3", "./test.db?_journal=WAL")
if err != nil {
log.Fatal(err)
}
defer db.Close()
script, err := ioutil.ReadFile("schema.txt")
if err != nil {
log.Fatal(err)
}
_, err = db.Exec(string(script))
if err != nil {
log.Fatalf("执行 SQL 脚本失败: %v", err)
}
log.Println("SQL 脚本执行成功!")
}
和sql脚本文件schema.txt
sql
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER
);
INSERT INTO users(name, age) VALUES('张三', 30);
INSERT INTO users(name, age) VALUES('李四', 25);
执行出错,有几种错因,分别是GOOS错误,CGO_ENABLED参数错误。
C:\d\goprj>go run testsqlite.go
exec: "C:\\Users\\lt\\AppData\\Local\\Temp\\go-build3051985547\\b001\\exe\\testsqlite": executable file not found in %PATH%
C:\d\goprj>set GOOS=windows
C:\d\goprj>go run testsqlite.go
2026/10/24 21:12:41 执行 SQL 脚本失败: Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
exit status 1
C:\d\goprj>set CGO_ENABLED=1
C:\d\goprj>go run testsqlite.go
# runtime/cgo
cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in %PATH%
把本地安装的mingw64 gcc加入路径,就能执行go文件了。也能build成可执行文件。
C:\d\goprj>set path=%PATH%;C:\d\mingw64\bin
C:\d\goprj>go run testsqlite.go
2026/10/24 21:31:01 SQL 脚本执行成功!
C:\d\goprj>go build testsqlite.go
C:\d\goprj>testsqlite
2026/10/24 21:32:21 SQL 脚本执行成功!
用sqlite CLI验证写入的test.db文件, 完全正确。
C:\d\goprj>..\sqlite354 test.db
SQLite version 3.54.0 2026-10-09 15:46:58
Enter ".help" for usage hints.
SQLite-3.54 test.db-> .tables
users
SQLite-3.54 test.db-> select * from users;
╭────┬──────┬─────╮
│ id │ name │ age │
╞════╪══════╪═════╡
│ 1 │ 张三 │ 30 │
│ 2 │ 李四 │ 25 │
╰────┴──────┴─────╯