Go & SQLite on Windows
一般golang使用的sqlite驱动包都是github.com/mattn/go-sqlite3,但是官方并没有直接支持windows平台的编译,因为windows平台编译默认需要gcc支持
其实解决办法很简单,只需要在windows平台下安装gcc即可正常使用。
编译错误如下:
go get github.com/mattn/go-sqlite3 # github.com/mattn/go-sqlite3 exec: "gcc": executable file not found in %PATH%
下面说明如何解决:
1. 下载GCC http://tdm-gcc.tdragon.net/download
2. 安装GCC
3. 打开MinGW Command Prompt 安装sqlite3
go get github.com/mattn/go-sqlite3
4. 安装好就可以测试程序了
package main import ( "database/sql" "fmt" _ "github.com/mattn/go-sqlite3" ) func main() { //1. Open connection db, err := sql.Open("sqlite3", ":memory:") checkErr(err) defer db.Close() //2. fail-fast if can't connect to DB checkErr(db.Ping()) //3. create table _, err = db.Exec("create table USER (ID integer PRIMARY KEY, NAME string not null); delete from USER;") checkErr(err) //4. insert data //4.1 Begin transaction tx, err := db.Begin() checkErr(err) //4.2 Prepare insert stmt. stmt, err := tx.Prepare("insert into USER(ID, NAME) values(?, ?)") checkErr(err) defer stmt.Close() for i := 0; i < 10; i++ { _, err = stmt.Exec(i, fmt.Sprint("user-", i)) checkErr(err) } //4.3 Commit transaction tx.Commit() //5. Query data rows, err := db.Query("select * from USER") checkErr(err) defer rows.Close() //5.1 Iterate through result set for rows.Next() { var name string var id int err := rows.Scan(&id, &name) checkErr(err) fmt.Printf("id=%d, name=%s\n", id, name) } //5.2 check error, if any, that were encountered during iteration err = rows.Err() checkErr(err) } func checkErr(err error, args ...string) { if err != nil { fmt.Println("Error") fmt.Println("%q: %s", err, args) } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现