美文网首页
Go语言第5天 - 数据库连接

Go语言第5天 - 数据库连接

作者: nullError | 来源:发表于2018-07-17 11:59 被阅读322次

    开发环境为macOS 10.13.4,所以暂时不涉及到Windows下的操作。


    1. 安装mySql

    首先从官网下载 mySql,我选择的是“macOS 10.13 (x86, 64-bit), DMG Archive”这个版本。点击下载后他提示需要登录,但其实点击左下角的“No thanks, just start my download”就可以直接下载了。

    下载完成后点击安装即可

    两种密码加密方式都可,如果没有其他原因,建议选择上面Strong的加密方式 设置root账户的密码

    安装完毕后启动mySql服务


    一些mySql的基本配置都在这里 此处mySql服务已启动

    添加环境变量。
    如果以下操作有疑义,直接用文本编辑软件打开“你的用户/.bash_profile”文件,添加“PATH=$PATH:/usr/local/mysql/bin”到文件尾,并在terminal中执行“source ~/.bash_profile”。

    //terminal终端中,打开.bash_profile文件
    vim ~/.bash_profile
    //文件编辑中,添加以下文本到文件末尾
    PATH=$PATH:/usr/local/mysql/bin
    //terminal终端中,刷新配置
    source ~/.bash_profile
    

    以上操作都完成后,在终端中输入

    mysql --version
    

    如果看到以下输出,则代表mySql安装成功

    mysql  Ver 8.0.11 for macos10.13 on x86_64 (MySQL Community Server - GPL)
    

    2. go语言的mySql驱动安装

    Go-MySQL-Driver
    直接在终端中输入

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

    进行安装。

    3. 数据库连接

    新建dbClient.go文件(以下代码用到了其他文件中定义的常量与struct,自己运行需要稍作修改)

    package base
    
    //_"third/go-sql-driver/mysql" 仅导入,促使内部初始化
    import (
        "database/sql"
        _"third/go-sql-driver/mysql"
        "config"
    )
    
    var defaultDBClient *DBClient;
    ///默认数据库连接
    func DefaultDBClient() *DBClient {
        if defaultDBClient != nil {
            return defaultDBClient;
        }
        defaultDBClient = &DBClient{config.DataBaseURL,config.DataBaseUserName,config.DataBasePassword,config.DataBaseDBName,nil};
        return defaultDBClient;
    }
    
    
    //--------------------------------------------------------------------
    type DBClient struct {
        ///数据库地址
        dataBaseURL string
        ///用户名
        userName string
        ///密码
        password string
        //数据库名称
        dataBaseName string
        ///数据库实例
        DB *sql.DB
    }
    
    ///连接数据库
    func (client *DBClient) Connect() *Error  {
        db,err := sql.Open("mysql",client.userName+":"+client.password+"@tcp("+client.dataBaseURL+")/");
        if err != nil {
            return MakeErrorWithText(ERROR_DATABASE_CONNECT,err.Error());
        }
        //open不会去获得数据库连接有效性,当执行数据库操作的时候才会去连接,可以通过ping来验证数据库连接的有效性
        err2 := db.Ping();
        if err2 != nil {
            return MakeErrorWithText(ERROR_DATABASE_CONNECT,err2.Error());
        }
        client.DB = db;
        return nil;
    }
    
    ///断开数据库连接
    func (client *DBClient) Disconnect() *Error {
        if client.DB == nil {
            return MakeError(ERROR_DATABASE_DISCONNECT);
        }
        err := client.DB.Close();
        if err != nil {
            return MakeErrorWithText(ERROR_DATABASE_DISCONNECT,err.Error());
        }
        client.DB = nil;
        return nil;
    }
    
    
    

    在main函数中调用

    func main() {
        var error = base.DefaultDBClient().Connect();
        if error != nil {
            println(error.Error());
        } else {
            println("连接成功");
        }
    }
    

    运行后就可以看到控制台输出“连接成功”。

    相关文章

      网友评论

          本文标题:Go语言第5天 - 数据库连接

          本文链接:https://www.haomeiwen.com/subject/oekwpftx.html