• go语言操作数据库


    1.10 GO连接MySQL

    1. 因为Go语言没有提供任何官方数据库驱动,所以需要安装第三方函数库。
    2. 由于在github上安装,所以需要安装git软件,安装过程一直点击下一步即可。安装完成后需要配置环境变量
    1.10.1 安装git

    git软件

    在这里插入图片描述

    安装完毕后,配置git的环境变量,这样可以使用get的指令

    在这里插入图片描述

    1.10.2 安装数据库驱动

    设置GOPATH的环境变量,这样驱动才会下载到项目根目录中。

    在这里插入图片描述


    在cmd命令窗口中输入如下命令安装驱动

    go get github.com/go-sql-driver/mysql
    
    这一命令会从代码中获取驱动的具体代码,并将这些代码放置到包库中,当需要用到驱动的时候,编译器会把驱动代码与用户编写的代码一同编译。
    
    • 1
    • 2
    • 3

    安装完毕后,会在GOPATH下看到下载的驱动

    在这里插入图片描述

    报错解决

    https://blog.csdn.net/admin_jalen/article/details/123025833?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169519102416800225569075%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169519102416800225569075&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-123025833-null-null.142^v94^control&utm_term=%20OpenSSL%20SSL_connect%3A%20SSL_ERROR_SYSCALL%20in%20connection%20to%20github.com%3A443&spm=1018.2226.3001.4187
    
    • 1
    1.10.3 连接数据库

    1、在src目录下创建demo.go文件,导入数据库驱动

    import (
    	"database/sql"
    	_ "github.com/go-sql-driver/mysql"
    )
    
    注意:程序在操作数据库的时候只需要用到database/sql,而不需要直接使用数据库驱动,所以程序在导入数据库驱动的时候将这个包的名字设置成下划线。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2、通过sql.open()连接数据库

    sql.open(驱动名,数据源dsn)(*DB,err)
    
    数据源语法:"用户名:密码@[连接方式](主机名:端口号)/数据库名"
    
    注意:open()在执行时不会真正的与数据库进行连接,只是设置连接数据库需要的参数
    ping()方法才是连接数据库
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3、执行SQL语句

    ​ 创建测试表

    mysql> create table stu(
        -> id int primary key,
        -> name varchar(10)
        -> );
    Query OK, 0 rows affected (0.02 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    操作数据

    package main
    
    import (
    	"database/sql"
    	_ "github.com/go-sql-driver/mysql"
    	"fmt"
    )
    
    func main(){
    	//"用户名:密码@[连接方式](主机名:端口号)/数据库名"
    	db,_:=sql.Open("mysql","root:root@(127.0.0.1:3306)/itcast") // 设置连接数据库的参数
    	defer db.Close()	//关闭数据库
    	err:=db.Ping()		//连接数据库
    	if err!=nil{
    		fmt.Println("数据库连接失败")
    		return
    	}
    
    	//操作一:执行数据操作语句
    	/*
    	sql:="insert into stu values (2,'berry')"
    	result,_:=db.Exec(sql)		//执行SQL语句
    	n,_:=result.RowsAffected();	//获取受影响的记录数
    	fmt.Println("受影响的记录数是",n)
    	*/
    
    	//操作二:执行预处理
    	/*
    	stu:=[2][2] string{{"3","ketty"},{"4","rose"}}
    	stmt,_:=db.Prepare("insert into stu values (?,?)")		//获取预处理语句对象
    	for _,s:=range stu{
    		stmt.Exec(s[0],s[1])			//调用预处理语句
    	}
    	*/
    
    	//操作三:单行查询
    	/*
    	var id,name string
    	rows:=db.QueryRow("select * from stu where id=4")   //获取一行数据
    	rows.Scan(&id,&name)		//将rows中的数据存到id,name中
    	fmt.Println(id,"--",name)
    	*/
    
    	//操作四:多行查询
    	rows,_:=db.Query("select * from stu")		//获取所有数据
    	var id,name string
    	for rows.Next(){		//循环显示所有的数据
    		rows.Scan(&id,&name)
    		fmt.Println(id,"--",name)
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
  • 相关阅读:
    https证书的常用版本有哪些
    IDEA插件开发(16)---对话框
    【LeetCode】Day128-合并K个升序链表
    mybatis plus MetaObjectHandler 不生效
    react-router 源码及原理解析 v5版本
    C#设计模式之二工厂方法模式(Factory Method Pattern)【创建型】
    Kamiya丨Kamiya艾美捷抗FLAG多克隆说明书
    LabVIEW创建自定义输入控件、显示控件和自定义类型3
    appium+python自动化测试
    关于ABB机器人安全区域设定
  • 原文地址:https://blog.csdn.net/qq_40432598/article/details/133077841