• Go_连接MySQL


    Go操作MySQL

    连接

    Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用database/sql包时必须注入(至少)一个数据库驱动。

    我们常用的数据库基本上都有完整的第三方实现。例如:MySQL驱动

    下载依赖

    go get -u github.com/go-sql-driver/mysql

    使用MySQL驱动

    func Open(driverName, dataSourceName string) (*DB, error)

    Open打开一个dirverName指定的数据库,dataSourceName指定数据源,一般包至少括数据库文件名和(可能的)连接信息。

    初始化连接

    Open函数可能只是验证其参数,而不创建与数据库的连接。如果要检查数据源的名称是否合法,应调用返回值的Ping方法。

    返回的DB可以安全的被多个goroutine同时使用,并会维护自身的闲置连接池。这样一来,Open函数只需调用一次。很少需要关闭DB。

    // 定义一个全局对象db
    var db *sql.DB
    
    // 定义一个初始化数据库的函数
    func initDB() (err error) {
    	// DSN:Data Source Name
    	dsn := "user:password@tcp(127.0.0.1:3306)/test"
    	// 不会校验账号密码是否正确
    	// 注意!!!这里不要使用:=,我们是给全局变量赋值,然后在main函数中使用全局变量db
    	db, err = sql.Open("mysql", dsn)
    	if err != nil {
    		return err
    	}
    	// 尝试与数据库建立连接(校验dsn是否正确)
    	err = db.Ping()
    	if err != nil {
    		return err
    	}
    	return nil
    }
    
    func main() {
    	err := initDB() // 调用输出化数据库的函数
    	if err != nil {
    		fmt.Printf("init db failed,err:%v
    ", err)
    		return
    	}
    }

    其中sql.DB是一个数据库(操作)句柄,代表一个具有零到多个底层连接的连接池。它可以安全的被多个go程同时使用。database/sql包会自动创建和释放连接;它也会维护一个闲置连接的连接池。

    代码:

    package main
    
    import (
    	"database/sql"
    	"fmt"
    	_ "github.com/go-sql-driver/mysql" //执行init()函数,里面向sql注册了MySQLDriver
    )
    
    // Go连接MySQL示例
    
    func main() {
    	// 数据库信息
    	// 用户名:密码@tcp(ip:端口)/数据库的名字
    	dsn := "root:root@tcp(127.0.0.1:3306)/goday10"
    	// 连接数据库
    						//驱动名字           //数据源
    	db, err := sql.Open("mysql", dsn) // 不会校验用户名和密码是否正确
    	if err != nil {                   // dsn格式不正确的时候会报错
    		fmt.Printf("dsn:%s invalid, err:%v
    ", dsn, err)
    		return
    	}
    	err = db.Ping() // 尝试连接数据库
    	if err != nil {
    		fmt.Printf("open %s failed, err:%v
    ", dsn, err)
    		return
    	}
    	fmt.Println("连接数据库成功!")
    }
    
  • 相关阅读:
    20145215《信息安全系统设计基础》第三周学习总结
    20145215《信息安全系统设计基础》第二周学习总结
    Ubuntu下git的安装与使用
    20145215《信息安全系统设计基础》第一周学习总结
    20145215《信息安全系统设计基础》第0周学习总结
    第一周Web类WriteUp
    20145215《Java程序设计》课程总结
    20145215《Java程序设计》第10周学习总结
    python字符串基本方法
    python数据类型
  • 原文地址:https://www.cnblogs.com/yzg-14/p/12291107.html
Copyright © 2020-2023  润新知