1、驱动选择地址

github.com/golong.go/wiki/Projets#databases

2、数据库导入并初始化

  1. import (
  2. "database/sql"
  3. _ "github.com/go-sql-driver/mysql" //触发导入
  4. )

3、操作

1、使用驱动

  1. a.选择驱动
  2. b.初始化导入驱动

2、打开数据库
3、操作:

  1. a. 修改对应方法: Exec
  2. b. 查询对应方法: Query; for + Rows.Next Rows.Scan

4、关闭资源

  1. a.查询: Rows.Close()

5、进程退出

  1. 关闭数据库(连接池)

ORM框架

  1. 目前已经到了 gorm 2.0 版本

4、示例

  1. func main(){
  2. driverName:="mysql"
  3. dsn := "user:password@protocol(host:prot)/dbname?charset=utf8mb4&loc=Local&parseTime=true" // data store name 数据库连接信息,使用协议,用户&密码,数据库,连接参数
  4. db,err := sql.Open(driverName,dsn) //打开数据库
  5. fmt.Println(db,err)
  6. if err !=nil{
  7. fmt.Println(err)
  8. return
  9. }
  10. defer db.Close()
  11. err = db.Ping()
  12. // 操作
  13. rows,err :=db.Query("select * from user;") //查询语句
  14. if err !=nil{
  15. fmt.Println(err)
  16. return
  17. }
  18. defer rows.Close()
  19. for rows.Next(){
  20. var (
  21. id string
  22. name string
  23. password string
  24. sex bool
  25. birthday *time.Time
  26. )
  27. err:=rows.Scan(&id,&name,&password,&sex,&birthday,&addr,&tel) //Scan用于查询一行中的值
  28. if err !=nil{
  29. fmt.Println(err)
  30. break
  31. } else {
  32. fmt.Println(id,name,password,sex,birthday)
  33. }
  34. }
  35. var id int 64
  36. err := db.QueryRow("select id from user").Scan(&id) //使用Scan方法直接查询某列值
  37. }

5、sql 预处理

  1. name:= "%kk%" //sql 注入
  2. sql:=`
  3. select id,name,password,sex,birthday,addr,tel from user where name like ? order by ? desc limit ? offset ?
  4. ` //占位一般只占位where后面的各种条件,但是不能占位select后面选择的字段,也不能替代关键字,也不能替代表名,表名的属性也不能替代,但是可以使用 fmt.Sprintf()函数来代替
  5. fmt.Println(sql)
  6. // 操作
  7. rows,err:=db.Query(sql,name,"birthday",3,0) //数据库的预处理方式
  8. if err !=nil{
  9. fmt.Println(err)
  10. return
  11. }
  12. defer row.Close()
  13. fro rows.Close()
  14. for row.Next() {
  15. var (
  16. id int64
  17. )
  18. }
文档更新时间: 2023-03-26 17:22   作者:张尚