1、下载 github.com包
golang的”database/sql”是操作数据库时常用的包,这个包定义了一些sql操作的接口,具体的实现还需要不同数据库的实现,mysql比较优秀的一个驱动是:github.com/go-sql-driver/mysql
,在接口、驱动的设计上”database/sql”的实现非常优秀,
2、创建文件,导入包
在src目录下创建demo.go文件(用到多文件编程,详情参考:https://blog.csdn.net/weixin_42117918/article/details/81835628),导入数据库驱动
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
注意:程序在操作数据库的时候只需要用到database/sql,而不需要直接使用数据库驱动,所以程序在导入数据库驱动的时候将这个包的名字设置成下划线。
3、通过sql.open()连接数据库
sql.open(驱动名,数据源dsn)(*DB,err)
数据源语法:"用户名:密码@[连接方式](主机名:端口号)/数据库名"
注意:open()在执行时不会真正的与数据库进行连接,只是设置连接数据库需要的参数
ping()方法才是连接数据库
4、代码实例:
package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"fmt"
)
func main(){
//"用户名:密码@[连接方式](主机名:端口号)/数据库名"
db,_:=sql.Open("mysql","root:root@(127.0.0.1:3306)/itcast") // 设置连接数据库的参数
defer db.Close() //关闭数据库
err:=db.Ping() //连接数据库
if err!=nil{
fmt.Println("数据库连接失败")
return
}
//操作一:执行数据操作语句
/*
sql:="insert into stu values (2,'berry')"
result,_:=db.Exec(sql) //执行SQL语句
n,_:=result.RowsAffected(); //获取受影响的记录数
fmt.Println("受影响的记录数是",n)
*/
//操作二:执行预处理
/*
stu:=[2][2] string{{"3","ketty"},{"4","rose"}}
stmt,_:=db.Prepare("insert into stu values (?,?)") //获取预处理语句对象
for _,s:=range stu{
stmt.Exec(s[0],s[1]) //调用预处理语句
}
*/
//操作三:单行查询
/*
var id,name string
rows:=db.QueryRow("select * from stu where id=4") //获取一行数据
rows.Scan(&id,&name) //将rows中的数据存到id,name中
fmt.Println(id,"--",name)
*/
//操作四:多行查询
rows,_:=db.Query("select * from stu") //获取所有数据
var id,name string
for rows.Next(){ //循环显示所有的数据
rows.Scan(&id,&name)
fmt.Println(id,"--",name)
}
}
注:通过go可以实现对MySQL数据库表中的数据操作之外,还可以执行 对表的创建、修改、删除等操作。