Go & SQLite on Windows
2024-10-19 19:52:52
一般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 := ; i < ; 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)
}
}
最新文章
- 练习:使用nmcli 配置网络连接
- mvc Razor 视图中找不到 ViewBag的定义
- 配置FastReport,FastReport报表加载不出来
- 常用linux命令索引
- Peer certificate cannot be authenticated with known CA certificates.
- 【转载】struct和typedef struct彻底明白了
- 正确AJAX了解该技术的,创建,应用
- Java常用类(四)之数组工具类Arrays
- 【转载】从头编写 asp.net core 2.0 web api 基础框架 (5) EF CRUD
- (二)Qt窗口应用程序Widget
- PHP6天基础知识部分
- CodeForces 1117C Magic Ship (循环节+二分答案)
- 并发之java.util.concurrent.atomic原子操作类包
- Linux下查看磁盘挂载的几种方法
- [转]MyEclipse内存不足问题
- JS库汇总[重要]
- 非抢占式RCU实现(二),解释:为什么 RCU_NEXT_SIZE 宏值是4?
- 微信小程序的图片懒加载
- tomcat manager
- java笔记--线程休眠sleep()的运用