zoukankan      html  css  js  c++  java
  • 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中常见的问题点,知识点,及盲点。
  • 相关阅读:
    几种跨平台解决方案:React Native、Kotlin、Flutter、Swift
    vue组件化
    flutter学习笔记(合集)
    sessionStorage获取用户行为
    什么是深度学习?
    javascript原生dom的那些事儿
    对象的创建
    初识requirejs
    使用vue-cli3快速构建项目
    python16_day40【数据结构】
  • 原文地址:https://www.cnblogs.com/sblack/p/12938112.html
Copyright © 2011-2022 走看看