使用 SQLite 数据库
尝试在 Windows 上使用 github.com/mattn/go-sqlite3 驱动,程序会给你以下错误
go get github.com/mattn/go-sqlite3
# github.com/mattn/go-sqlite3
exec: "gcc": executable file not found in %PATH%
go-sqlite3 是一个 cgo 包,要使用 go-sqlite3 构建应用程序,您需要使用 gcc 进行编译,但是在你使用构建和安装 go-sqlite3 之后,你以后可以构建你的应用程序而无需依赖 gcc。因此,请按顺序执行下面提到的步骤
- 从这里下载 gcc http://tdm-gcc.tdragon.net/download
- 安装 gcc
go get -u github.com/mattn/go-sqlite3
go install github.com/mattn/go-sqlite3
SQLite 增删改查实例
下面的例子显示的如何使用 go-sqlite3 进行数据库操作,结合一个 Person 结构实现了数据库的增删改查操作。
增加数据
// 添加一条数据
func addPerson(person Person) (int64, error) {
result, err := db.Exec(`INSERT INTO person (name,nickname,created_at) VALUES ($1,$2,$3)`, person.Name, person.Nickname, person.CreatedAt.Format(currentTimeStamp))
checkErr(err)
id, err := result.LastInsertId()
checkErr(err)
return id, nil
}
更新数据
// 更新一条数据(指定ID)
func updatePerson(person Person) error {
_, err := db.Exec(`UPDATE person SET name = $1,nickname = $2,created_at = $3 WHERE id = $4`, person.Name, person.Nickname, person.CreatedAt, person.ID)
checkErr(err)
return nil
}
读取数据
// 读取所有数据
func readAllPerson() ([]Person, error) {
rows, err := db.Query(`SELECT * FROM person`)
defer rows.Close()
checkErr(err)
var result []Person
for rows.Next() {
v := Person{
}
err := rows.Scan(&v.ID, &v.Name, &v.Nickname, TimeStamp{
&v.CreatedAt})
checkErr(err)
result = append(result, v)
}
return result, nil
}
删除数据
// 删除一条数据(指定ID)
func deletePerson(