GOLANG之学习类库-mysql

接着上一篇,我们学习了复用goconfig做本地配置的一些操作,接下来我们复用配置来进行连接mysql数据库的相关操作。

一,准备工作

  1,导入数据库驱动

    

1 import (
2     "database/sql"
3     "fmt"
4     "github.com/Unknwon/goconfig"
5     _ "github.com/go-sql-driver/mysql"   初始化执行init
6     "log"
7     "os"
8     "time"
9 )

  2,准备本地mysql数据库

  

1 CREATE TABLE `user` (
2   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
3   `name` varchar(20) DEFAULT NULL,
4   `age` tinyint(4) DEFAULT NULL,
5   PRIMARY KEY (`id`)
6 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4

二,连接MYSQL

  

 1 mysqlConfig,err:= ConfigFile.GetSection("mysql")
 2     if err !=nil{
 3         fmt.Println("no mysql section config")
 4         os.Exit(1)
 5     }
 6 
 7     //生成连接mysql dsn
 8     fillDns(mysqlConfig)
 9 
10     //连接mysql
11     db,err := sql.Open("mysql",dns)
12     if err != nil {
13         panic(err.Error())
14     }
15     defer db.Close()
16 
17     //连接超时
18     db.SetConnMaxLifetime(10*time.Second)
19     //最大连接数
20     db.SetMaxOpenConns(100)
21     //连接空闲数
22     db.SetMaxIdleConns(16)

三,CURD操作

  INSERT DATA  

1 rows,err := db.Exec("insert into user(name,age) values('test',4)")
2     if err !=nil{
3         fmt.Printf("insert failed:%v
",err)
4         return
5     }
6     lastinsertid,_ := rows.LastInsertId()
7     affectedrows,_ := rows.RowsAffected()

  SELECT DATA

 1 stmtout,err := db.Prepare("select name,age from user where id=?")
 2     if err!=nil{
 3         log.Fatalf(err.Error())
 4     }
 5     defer stmtout.Close()
 6     user := new(User)
 7     err = stmtout.QueryRow(2).Scan(&user.name,&user.age)
 8     if err !=nil{
 9         log.Fatalf(err.Error())
10     }
11     fmt.Println(user.name,user.age)

  UPDATE DATA

1 result,err := db.Exec("UPDATE user set age=? where id=?",20,1)
2 if err != nil{
3     fmt.Printf("Insert failed,err:%v",err)
4     return
5 }
6 rowsaffected,err := result.RowsAffected()

  DELETE DATA

1 result,err := db.Exec("delete from user where id=?",1)
2     if err !=nil {
3         log.Fatalf(err.Error())
4     }
5     fmt.Println(result.RowsAffected())

四,总结

  其实对DB的操作和其它语言都类似的,也可以事物,PREPARE预处理SQL等,有一点不太一样,就是其它语言基本不用再次声明对DB操作的结果,可以自动转换,GO中还要壹声明结构体,变更等来接收从DB取出来的数据。

  学习了配置,学习了基本连接MYSQL,未完待续。

PHP中常见的问题点,知识点,及盲点。
原文地址:https://www.cnblogs.com/sblack/p/12938112.html