Go实战--go语言操作MySQL数据库(go-sql-driver/mysql)
来源:互联网 发布:网络数据传输 编辑:程序博客网 时间:2024/04/27 00:50
生命不止,继续 go go go !!!
之前关于golang操作数据库的博客:
Go实战–go语言操作sqlite数据库(The way to go)
Go实战–golang中使用MongoDB(mgo)
Go实战–golang中使用redis(redigo和go-redis/redis)
今天继续,跟大家介绍golang中如何使用MySQL数据库。
何为MySQL
Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
From Wiki:
MySQL(官方发音为/maɪ ˌɛskjuːˈɛl/“My S-Q-L”,但也经常读作/maɪ ˈsiːkwəl/“My Sequel”)原本是一个开放源代码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被昇阳微系统(Sun Microsystems)收购。2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL成为Oracle旗下产品。
MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。
但被甲骨文公司收购后,Oracle大幅调涨MySQL商业版的售价,且甲骨文公司不再支持另一个自由软件项目OpenSolaris的发展,因此导致自由软件社区们对于Oracle是否还会持续支持MySQL社区版(MySQL之中唯一的免费版本)有所隐忧,MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划MariaDB。而原先一些使用MySQL的开源软件逐渐转向MariaDB或其它的数据库。例如维基百科已于2013年正式宣布将从MySQL迁移到MariaDB数据库。
Windows下安装MySQL
我们当然下载免费的社区版喽,有两种格式,一种是msi,一种是zip。这里介绍的是zip格式的MySQL安装配置。
下载
https://dev.mysql.com/downloads/mysql/
解压
例如解压到D:\mysql-5.7.18-winx64
新建配置文件
在D:\mysql-5.7.18-winx64下新建my.ini文件,my.ini文件键入:
[mysqld]basedir=D:\mysql-5.7.18-winx64datadir=D:\mysql-5.7.18-winx64\data
这里切记,千万不要自己手动新建data文件夹
添加环境变量
把D:\mysql-5.7.18-winx64\bin路径添加到环境变量中
启动cmd
这里要注意的是,右键以管理员身份启动cmd.exe,cmd.exe的位置在 C:\Windows\System32
安装MySQL
以管理员身份打开cmd后,进入MySQL所在的文件夹:D:\mysql-5.7.18-winx64\bin,键入命令:
D:\mysql-5.7.18-winx64\bin>mysqld -installService successfully installed.
在任务管理器的服务中即可看到:
初始化
键入命令:
D:\mysql-5.7.18-winx64\bin>mysqld --initialize
启动服务
D:\mysql-5.7.18-winx64\bin>net start mysqlMySQL 服务正在启动 .MySQL 服务已经启动成功。
停止服务
至此,你以为大功告成了吗?键入:
D:\mysql-5.7.18-winx64\bin>mysqlERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)
首先要停止服务:
D:\mysql-5.7.18-winx64\bin>net stop mysqlMySQL 服务正在停止.MySQL 服务已成功停止。
重置密码
键入命令
D:\mysql-5.7.18-winx64\bin>mysqld --skip-grant-tables
打开另一个cmd,键入:mysql -u root -p,并在输入密码的时候按下回车
D:\mysql-5.7.18-winx64\bin>mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 3Server version: 5.7.18 MySQL Community Server (GPL)Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
键入命令:
mysql> use mysqlDatabase changed
键入命令:
mysql> update user set authentication_string=password("wangshubo") where user="root";Query OK, 1 row affected, 1 warning (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 1
新建数据库
mysql> create database test;Query OK, 1 row affected (0.06 sec)
新建表
mysql> create table user_info( -> id int(4) not null primary key auto_increment, -> name char(20) not null);Query OK, 0 rows affected (0.29 sec)
go-sql-driver/mysql开源库
github地址
https://github.com/go-sql-driver/mysql
安装
go get github.com/go-sql-driver/mysql
导入包
import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql")
连接数据库
db, err := sql.Open("mysql", "root:wangshubo@/test?charset=utf8") checkErr(err)
插入数据
stmt, err := db.Prepare("INSERT user_info SET id=?,name=?") checkErr(err) res, err := stmt.Exec(1, "wangshubo") checkErr(err)
更新数据
stmt, err = db.Prepare("update user_info set name=? where id=?") checkErr(err) res, err = stmt.Exec("astaxieupdate", id) checkErr(err)
查询
rows, err := db.Query("SELECT * FROM user_info") checkErr(err)
删除
stmt, err = db.Prepare("delete from user_info where id=?")checkErr(err)res, err = stmt.Exec(id)checkErr(err)
完整代码
package mainimport ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql")func main() { db, err := sql.Open("mysql", "root:wangshubo@/test?charset=utf8") checkErr(err) // insert stmt, err := db.Prepare("INSERT user_info SET id=?,name=?") checkErr(err) res, err := stmt.Exec(1, "wangshubo") checkErr(err) // update stmt, err = db.Prepare("update user_info set name=? where id=?") checkErr(err) res, err = stmt.Exec("wangshubo_update", 1) checkErr(err) affect, err := res.RowsAffected() checkErr(err) fmt.Println(affect) // query rows, err := db.Query("SELECT * FROM user_info") checkErr(err) for rows.Next() { var uid int var username string err = rows.Scan(&uid, &username) checkErr(err) fmt.Println(uid) fmt.Println(username) } // delete stmt, err = db.Prepare("delete from user_info where id=?") checkErr(err) res, err = stmt.Exec(1) checkErr(err) // query rows, err = db.Query("SELECT * FROM user_info") checkErr(err) for rows.Next() { var uid int var username string err = rows.Scan(&uid, &username) checkErr(err) fmt.Println(uid) fmt.Println(username) } db.Close()}func checkErr(err error) { if err != nil { panic(err) }}
输出:
1
1
wangshubo_update
2
wangshubo
2
wangshubo
通过命令行查看表
- Go实战--go语言操作MySQL数据库(go-sql-driver/mysql)
- go-sql-driver/mysql 学习
- GO语言操作MySQL
- go语言 mysql操作
- Go语言 Go操作mysql简单示例
- Go实战--golang中使用echo和MySQL搭建api(labstack/echo、go-sql-driver/mysql)
- go语言:数据库操作之MySql
- Mysql的Go语言驱动--Go-MySQL-Driver的使用
- GO语言的mysql操作
- go语言访问mysql数据库
- Go-MySQL-Driver:一个Go语言的轻量级极速的mysql驱动 Go
- go语言连接mysql数据库 go语言网络库搭建
- golang学习之旅:使用go语言操作mysql数据库
- go操作 mysql示例
- go 连接 mysql 数据库
- go连接mysql数据库
- go连接mysql数据库
- Go实战--go语言操作sqlite数据库(The way to go)
- java线程同步之条件对象
- httpMessageConverter
- python之模块
- css基础知识
- JQuery知识点
- Go实战--go语言操作MySQL数据库(go-sql-driver/mysql)
- Java语句
- Mysql主从复制和读写分离方案分析
- 虚拟机vmware网络电缆被拔出问题解决
- 元素 'ref' 中不允许出现属性 'local'。
- Java bean对象返回数据Json格式化
- 1065. 单身狗(25)
- Vue父子组件通信实践
- 安卓集成微信登陆