最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • [js go]go连接mysql

    正文概述 掘金(jslgo)   2020-12-22   487

    下载数据库驱动

    类似 npm install

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

    引入数据库接口和数据库驱动

    import (
    	"fmt"
    	"database/sql" // 类SQL数据库的泛用接口
    	_ "github.com/go-sql-driver/mysql" // go get -u github.com/go-sql-driver/mysql 下载, 注入数据库驱动
    )
    

    打开数据库

    	// DSN:Data Source Name
    	dsn := "userName:password@tcp(ip:port)/database_name"
    	db, err := sql.Open("mysql", dsn) // 使用mysql数据库驱动
    	if err != nil {
    		panic(err)
    	}
       	defer db.Close()
    	err = db.Ping()
    	if err != nil {
    		panic(err) 
    	} else {
    		fmt.Printf("db %v \n", db) // db &{0 0xc000130018 0 {0 0} [0xc000148120] map[] 0 1 0xc00010e0c0 false map[0xc000148120:map[0xc000148120:true]] map[] 0 0 0 0 <nil> 0 0 0 0 0x10ccd20}
    	}
    

    单行查询

    // 定义结构体
    type user struct {
    	id   int
    	age  int
    	name string
    }
    
    	sqlStr := "select * from user where id=?"
    	var u user
    	// 单行查询
    	err = db.QueryRow(sqlStr, 6).Scan(&u.id, &u.name, &u.age)
    	if err != nil {
    		fmt.Printf("scan err %v \n", err) // scan err sql: no rows in result set 
    	} else {
    		fmt.Printf("id: %d  name: %s  age: %d \n", u.id, u.name, u.age) // id: 5  name: hello  age: 18 
    	}
    

    多行查询

    	sqlStr = "select id, name, age from user where id > ?"
    	rows, err := db.Query(sqlStr, 0)
    	if err != nil {
    		fmt.Printf("query failed, err:%v \n", err)
    	} else {
    		defer rows.Close() // 关闭rows持有的数据库链接
    		for rows.Next() {	
    			var u user
    			err := rows.Scan(&u.id, &u.name, &u.age)
    			if err != nil {
    				fmt.Printf("scan failed, err:%v \n", err)
    			} else {
    				fmt.Printf("id:%d name:%s age:%d \n", u.id, u.name, u.age)
    			}
    		}
    	}
    

    增create

    新增一个即将被输出到社会的前端老哥

    	sqlStr = "insert into user(name, age) values (?,?)"
    	ret, err := db.Exec(sqlStr, "前端老哥", 35)
    	if err != nil {
    		fmt.Printf("insert failed, err:%v \n", err)
    	} else {
    		lastId, err := ret.LastInsertId() // 新插入数据的id
    		if err != nil {
    			fmt.Printf("get lastinsert id failed, err:%v \n", err)
    		} else {
    			fmt.Printf("insert success, the last id is %d. \n", lastId)
    		}
    	}
    

    改update

    让前端老哥重返十八岁, 爷曾轻

    	sqlStr = "update user set age=? where age = ?"
    	ret, err = db.Exec(sqlStr, 18, 35)
    	if err != nil {
    		fmt.Printf("update failed, err:%v \n", err)
    	} else {
    		n, err := ret.RowsAffected() // 操作影响的行数
    		if err != nil {
    			fmt.Printf("get RowsAffected failed, err:%v \n", err)
    		} else {
    			fmt.Printf("update success, affected rows:%d \n", n)
    		}
    	}
    

    删delete

    真的要保持危机意识, 学不动是不可能的

    	sqlStr = "delete from user where age > ?"
    	ret, err = db.Exec(sqlStr, 35)
    	if err != nil {
    		fmt.Printf("delete failed, err:%v \n", err)
    	} else {
    		n, err := ret.RowsAffected() // 操作影响的行数
    		if err != nil {
    			fmt.Printf("get RowsAffected failed, err:%v \n", err)
    		} else {
    			fmt.Printf("delete success, affected rows:%d \n", n)
    		}
    	}
    

    附阿里云ECS安装mysql

    centOS更新yum源

    $ rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
    

    安装mysql

    $ yum -y install mysql-community-server
    

    如果报错No match for argument, 可先禁用默认mysql模块, 再安装

    $ yum module disable mysql
    $ yum -y install mysql-community-server
    

    查看mysql版本

    $ mysql -V
    

    [js go]go连接mysql 启动mysql守护进程

    $ systemctl start mysqld
    

    查看mysql初始密码

    $ grep "password" /var/log/mysqld.log
    

    配置mysql安全性

    mysql_secure_installation
    

    接下来设置mysql可远程访问, 以及阿里云安全组添加mysql端口可访问, 具体可自行google

    可参考 segmentfault.com/a/119000001…


    起源地下载网 » [js go]go连接mysql

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元