1. Go语言中的数据库函数介绍
Go语言提供了许多用于操作数据库的包,如:database/sql、github.com/jmoiron/sqlx、github.com/go-sql-driver/mysql等。利用这些包,我们可以方便地实现与数据库的交互。database/sql是Go语言中最基本、最常用的操作数据库的包,它定义了一组接口,可以用来操作不同的数据库。
这里我们以MySQL为例,介绍如何在Go语言中使用database/sql包实现MySQL数据的增删改查操作。
2. 连接MySQL数据库
在执行MySQL数据的增删改查操作之前,我们需要与MySQL数据库建立连接。使用database/sql包时,要使用到另一个包sql / driver,我们可以使用以下代码来连接MySQL数据库:
import (
"database/sql"
_"github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/dbname?charset=utf8")
if err != nil {
fmt.Println("Open database error:", err)
return
}
defer db.Close()
//...
}
其中sql.Open函数的第一个参数是驱动名称,第二个参数是连接数据库的字符串,格式为:
'username:password@tcp(IP:Port)/dbname?charset=utf8'
其中username和password分别为MySQL的用户名和密码,IP和Port分别为MySQL所在服务器的IP地址和端口号,dbname为指定数据库的名称,charset=utf8为字符集。
3. 插入数据
插入数据操作就是往表中添加一条新记录,使用database/sql包中的Exec方法实现。以下是插入一条记录的代码:
_, err = db.Exec("INSERT INTO userinfo(username,departname,created) values(?,?,?)","astaxie","研发部门","2012-12-09")
if err != nil {
panic(err)
}
fmt.Println("insert success")
第一个参数是要执行的SQL语句,后面的参数是SQL语句中的占位符,对应的是实际要插入的值,需要注意的是,占位符的数量要与要插入的值的数量相同,否则会出现错误。
4.查询数据
查询数据就是从表中取出一些记录,然后进行相应的操作。使用database/sql包中的Query或QueryRow方法,以下是查询数据的代码:
var (
id int
username string
departname string
created time.Time
)
rows, err := db.Query("SELECT * FROM userinfo")
if err != nil {
panic(err)
}
defer rows.Close()
for rows.Next() {
err := rows.Scan(&id, &username, &departname, &created)
if err != nil {
panic(err)
}
fmt.Println(id,username,departname,created)
}
err = rows.Err()
if err != nil {
panic(err)
}
使用Query方法可以返回多行记录,使用QueryRow方法只返回一行记录。在查询数据时,需要注意:
所有查询结果都需要通过遍历Rows对象来获取,通过Scan方法来读取每列的值。
查询语句中的占位符与实际的参数需要一一对应,否则会出现错误。
5.更新数据
更新数据就是修改表中的一些记录,使用database/sql包中的Exec方法实现。以下是更新数据的代码:
_, err = db.Exec("update userinfo set username=? where uid=?", "astaxieupdate", 1)
if err != nil {
panic(err)
}
fmt.Println("update success")
在更新数据时,需要注意:
指定要更新的列和值。
过滤掉不要修改的部分。
指定修改哪一条记录。
6.删除数据
删除数据就是从表中删除一条或多条记录,使用database/sql包中的Exec方法实现。以下是删除数据的代码:
_, err = db.Exec("delete from userinfo where uid=?", 1)
if err != nil {
panic(err)
}
fmt.Println("delete success")
在删除数据时,也需要指定要删除的哪条记录。
7.总结
本文介绍了Go语言中操作MySQL数据库的基本方法,包括连接MySQL数据库、插入数据、查询数据、更新数据和删除数据等。在实际使用中,还需要注意SQL注入问题以及事务操作等方面的问题。