zoukankan      html  css  js  c++  java
  • go-mysql

    下载安装驱动
    go get github.com/go-sql-driver/mysql
     
    导入包:
    import "database/sql"
    import _ "github.com/go-sql-driver/mysql"
    sql.Open函数实际上是返回一个连接池对象,不是单个连接。
    在open的时候并没有去连接数据库,只有在执行query、exce方法的时候才会去实际连接数据库。
    在一个应用中同样的库连接只需要保存一个sql.Open之后的db对象就可以了,不需要多次open。
    连接池的实现关键在于SetMaxOpenConns和SetMaxIdleConns,
    SetMaxOpenConns用于设置最大打开的连接数,默认值为0表示不限制。
    SetMaxIdleConns用于设置闲置的连接数。
    设置最大的连接数,可以避免并发太高导致连接mysql出现too many connections的错误。
    设置闲置的连接数,则当开启的一个连接使用完成后,可以放在池里等候下一次使用。
    db.Ping() 调用完毕后会马上把连接返回给连接池。
    db.Exec() 调用完毕后会马上把连接返回给连接池,但是它返回的Result对象还保留这连接的引用,当后面的代码需要处理结果集的时候连接将会被重用。
    db.Query() 调用完毕后会将连接传递给sql.Rows类型,当然后者迭代完毕或者显示的调用db.Clonse()方法后,连接将会被释放回到连接池。
    db.QueryRow()调用完毕后会将连接传递给sql.Row类型,当db.Scan()方法调用之后把连接释放回到连接池。
    db.Begin() 调用完毕后将连接传递给sql.Tx类型对象,当db.Commit()或db.Rollback()方法调用后释放连接。
    sql.Rows类型表示查询返回多行数据的结果集。
    sql.Row类型表示单行查询结果的结果集。
    sql.Result类型表示插入更新和删除,返回的结果集
    声明一个全局的db对象,并进行初始化。
    vardb *sql.DB
    funcinit() {
        db, _ = sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test?charset=utf8")
        db.SetMaxOpenConns(2000)
        db.SetMaxIdleConns(1000)
        db.Ping()
    }
     
     
     
  • 相关阅读:
    数据结构-树与二叉树-思维导图
    The last packet successfully received from the server was 2,272 milliseconds ago. The last packet sent successfully to the server was 2,258 milliseconds ago.
    idea连接mysql报错Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property
    redis学习笔记
    AJAX校验注册用户名是否存在
    AJAX学习笔记
    JSON学习笔记
    JQuery基础知识学习笔记
    Filter、Listener学习笔记
    三层架构学习笔记
  • 原文地址:https://www.cnblogs.com/osbreak/p/10588690.html
Copyright © 2011-2022 走看看