• iris(golang)连接mysql数据库


    连接mysql数据库

    安装依赖

    go get github.com/go-sql-driver/mysql
    
    • 1
    func LinkMySQL(){
    	DB,_ := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/webgo_accout")
    	//设置数据库最大连接数
    	DB.SetConnMaxLifetime(100)
    	//设置上数据库最大闲置连接数
    	DB.SetMaxIdleConns(10)
    	//验证连接
    	if err := DB.Ping(); err != nil {
    		fmt.Println("open database fail")
    		return
    	}
    	fmt.Println("connnect success")
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    查询表文件(多个文件)

    create database webgo_accout;
    
    use webgo_accout;
    
    create table users(`uid` bigint not null AUTO_INCREMENT primary key,
    `accout` varchar(255) not null,
    `password` varchar(255) not null,
    `username` varchar(255) not null default '用户名1'
    );
    
    insert into users(`accout`,`password`,`username`) values ('admin','admin','admin');
    
    #测试是否是数组显示添加的数据,可以不写
    insert into users(`accout`,`password`,`username`) values ('test','test','test');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    //定义结构体
    type User struct{
    	Uid int `json:"uid"`
    	Accout string `json:"accout"`
    	PassWord string `json:"password"`
    	UserName string `json:"username"`
    }
    //查询方法
    func MySQLFindAll() []User{
    	var user User //结构体数据
    	users := []User{} //结构体数组
    	DB,_ := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/webgo_accout") //mysql数据库连接
    	rows,err := DB.Query("select * from users") //sql查询语句
    	if err != nil {
    		fmt.Println("select error",err)
    	}
    	for rows.Next() {
    		//添加数据
    		rows.Scan(&user.Uid,&user.Accout,&user.PassWord,&user.UserName)
    		//查看数据是否添加
    		fmt.Printf("uid:%d\n",user.Uid)
    		fmt.Printf("accout:%s\n",user.Accout)
    		users = append(users,user) //添加数据,结构: 结构体数组1 = append(结构体数组1,数据)
    	}
    	defer rows.Close()
    	return users
    }
    
    • 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

    iris与数据库进行连接显示

    注意,这个是不同包下的文件

    • 连接数据库部分
    • 需要go mod init link添加go.mod
    • go get github.com/go-sql-driver/mysql也是在此文件夹下添加,会生成go.sum
    package link
    
    import (
    	"fmt"
    	"database/sql"
    	_ "github.com/go-sql-driver/mysql"
    )
    
    func LinkMySQL(){
    	DB,_ := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/webgo_accout")
    	//设置数据库最大连接数
    	DB.SetConnMaxLifetime(100)
    	//设置上数据库最大闲置连接数
    	DB.SetMaxIdleConns(10)
    	//验证连接
    	if err := DB.Ping(); err != nil {
    		fmt.Println("open database fail")
    		return
    	}
    	fmt.Println("connnect success")
    }
    
    type User struct{
    	Uid int `json:"uid"`
    	Accout string `json:"accout"`
    	PassWord string `json:"password"`
    	UserName string `json:"username"`
    }
    func MySQLFindAll() []User{
    	var user User
    	users := []User{}
    	DB,_ := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/webgo_accout")
    	rows,err := DB.Query("select * from users")
    	if err != nil {
    		fmt.Println("select error",err)
    	}
    	for rows.Next() {
    		rows.Scan(&user.Uid,&user.Accout,&user.PassWord,&user.UserName)
    		fmt.Printf("uid:%d\n",user.Uid)
    		fmt.Printf("accout:%s\n",user.Accout)
    		users = append(users,user)
    	}
    	defer rows.Close()
    	return users
    }
    
    func LinkMongo(){
    	fmt.Print("测试:你好")
    }
    
    
    
    • 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
    • iris部分

    main主包下的go.mod

    module accout
    
    go 1.21.0
    
    require (
    	//...(go get xxx 自行添加的)
    )
    
    require (
    	com.chentianyu.learn/link v1.0.0
    )
    
    replace (
    	com.chentianyu.learn/link => ./link
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    package main
    
    import (
    	"github.com/kataras/iris/v12"
    	"com.chentianyu.learn/link"
    )
    
    func linkMy(){
    	link.LinkMySQL()
    }
    
    func main() {
    	app := iris.New()
    	linkMy() //连接数据库
    	
    	//查询数据库中的数据api(测试,正式要换成Post)  http://localhost:8089/mysql_find
    	app.Get("/mysql_find",func(ctx iris.Context){
    		user1 := link.MySQLFindAll()
    		ctx.JSON(user1)
    	})
    	//首页,根目录: http://localhost:8089/
    	app.Get("/",func(ctx iris.Context){
    		ctx.Text("welcome this is accout api")
    	})
    	
    	
    	//设置端口
    	app.Listen(":8089")
    }
    
    
    
    
    • 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
  • 相关阅读:
    Android平台下奔溃Crash和无响应ANR日志抓取分析
    CodeToN cf #3 Div.1+2 (A-D)
    KongA 任意用户登录漏洞分析
    “优化”城市出行体验——山海鲸智慧交通解决方案
    TikTok震撼全球!用户来自何方?
    CICD与DevOps
    【C++】入门篇-关键字&&命名空间&&输入输出&&缺省参数
    小文一篇,说说:where、:has和:is的特殊性吧
    python与matlab微分切片的区别
    跨境电商独立站怎么做?好做吗?
  • 原文地址:https://blog.csdn.net/yasinawolaopo/article/details/133696768