go mysql stmt exec_Go语言操作MySQL
章节
写在前面
go 操作 MySQL
感想
1.写在前面
接下来的记录中会附带记录当日工作学习到的东西,包括且不限于 技术、软实力-沟通、心态、理财、个人思考等
2.go 操作MySQL
如Java操作数据库,编程逻辑如下:
驱动加载、获取连接(connect)、生成Statement || PrepareStatement 对象、sql传参、exec or query、获取结果集 Resultset,go 操作MySQL的步骤也是如上步骤。
注意:go 加载驱动 需要依靠远程 import 的 驱动包 github.com/go-sql-driver/mysql
如下代码所示,演示了 基础操作 CURD
DbOperate.go
package DB
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
//返回数据库连接句柄
func connDb() *sql.DB {
db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/demo?charset=utf8")
checkErr(err)
return db
}
//insert
func DoInsert(sql string) {
db := connDb()
sql = "insert into test(name) value (?)"
stmt, err := db.Prepare(sql)
checkErr(err)
res, err := stmt.Exec("bofengliu")
checkErr(err)
fmt.Printf("成功了,%v", res)
}
//delete
func DoDelete(id int) {
db := connDb()
sql := "delete from test where id = ?"
stmt, err := db.Prepare(sql)
checkErr(err)
res, err := stmt.Exec(id)
checkErr(err)
res = nil
fmt.Println(res)
}
//update
func DoUpdate(name string, id int) int64 {
db := connDb()
sql := "update test set name = ? where id = ?"
stmt, err := db.Prepare(sql)
checkErr(err)
res, err := stmt.Exec(name, id)
checkErr(err)
affect, err := res.RowsAffected()
fmt.Println("影响数据集行数为", affect)
return affect
}
func DoQueryByName(name string) {
sql := "select * from test where name = \"" + name + "\""
db := connDb()
res, err := db.Query(sql)
checkErr(err)
for res.Next() {
var id int
var name string
err := res.Scan(&id, &name)
checkErr(err)
fmt.Println(id)
fmt.Println(name)
}
}
func checkErr(err error) {
if err != nil {
panic(err.Error())
}
}
数据表结构如下所示:
CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`),
KEY `idx_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8 |
上述代码中通过import 引入了 github.com/go-sql-driver/mysql,注意前方有 _ ,此代表 引入的远程包 不会在代码中直接使用,而是被程序间接加载,加载位置为 db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/demo?charset=utf8")
源代码如下所示:
// 支持多种驱动加载 ,当前程序中加载驱动为MySQL 驱动
func Open(driverName, dataSourceName string) (*DB, error) {
driversMu.RLock()
driveri, ok := drivers[driverName]
driversMu.RUnlock()
if !ok {
return nil, fmt.Errorf("sql: unknown driver %q (forgotten import?)", driverName)
}
if driverCtx, ok := driveri.(driver.DriverContext); ok {
connector, err := driverCtx.OpenConnector(dataSourceName)
if err != nil {
return nil, err
}
return OpenDB(connector), nil
}
return OpenDB(dsnConnector{dsn: dataSourceName, driver: driveri}), nil
}
经测试 没有问题,此为go 操作 MySQL 初体验。
3.感想
基础要牢靠,越是简单的东西,越需要记录。
完。
go mysql stmt exec_Go语言操作MySQL相关推荐
- c web mysql数据库_C语言操作MySQL数据库
原作者博客http://www.cnblogs.com/nliao/archive/2010/09/09/1822660.html 先看结构体 ---------------------------- ...
- Go语言操作MySQL
MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库. Go操作MySQL 连接 Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具 ...
- go语言mysql操作_使用Go语言操作MySQL数据库的思路与步骤
最近在做注册登录服务时,学习用Go语言操作MySQL数据库实现用户数据的增删改查,现将个人学习心得总结如下,另外附有代码仓库地址,欢迎各位有兴趣的fork. 软件环境:Goland.Navicat f ...
- c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...
这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...
- c语言连接mysql(入门)_MySQL入门之C语言操作MySQL
基本概念 C APIs包含在mysqlclient库文件当中,与MySQL的源代码一块发行,用于连接到数据库和执行数据库查询.#include #include #include #include # ...
- golang mysql curd_Go 语言操作 MySQL 之 CURD 操作
本文转载于SegmentFault社区 作者:Meng小羽 MySQL 是目前开发中最常见的关系型数据库,使用 Go 语言进行操控数据库需要使用 Go 自带database/sql和驱动go-sql- ...
- C语言操作MYSQL小例子
http://blog.csdn.net/small_qch/article/details/8180678 初学使用用C语言操作MYSQL,写了个小例子,帖上来献丢人一下,呵呵. 程序很简单,先连接 ...
- Linux C语言操作MySQL
1.MySQL数据库简介 MySQL是一个开源码的小型关系数据库管理系统,体积小,速度快,总体成本低,开源.MySQL有以下特性: (1) 使用C和C++编写,并使用了多种编译器进行测试,保证源码的可 ...
- linux下c语言调用mysql,Linux下C语言操作MYSQL总结
Linux下C语言操作MYSQL总结 发布时间:2006-12-17 00:40:00来源:红联作者:anciens 下文的用到的数据库表: 数据库中存在表table, 有name(varchar类型 ...
- 用C语言操作MySQL数据库-通用版
用C语言操作MySQL数据库 先看结构体: 以下代码块是用来连接数据库的通讯过程,要连接MYSQL,必须建立MYSQL实例,通过mysql_init初始化方能开始进行连接. typedef struc ...
最新文章
- docker 时间不一致,时区设置
- 查看tp框架版本方法
- vueform表单文件上传_峰哥说技术系列-8.Spring Boot文件上传(Form表单和Ajax方式)
- 在Arcmap中加载互联网地图资源的4种方法
- 参数化测试 junit_JUnit中的参数化测试运行器
- webpack系列-plugin
- Java Web整合开发(13) -- XML
- java - 抽象类、接口、内部类
- column分栏布局只是文字布局吗_CSS3 column 分栏
- Linux下更改Python的软连接
- PKUSC2019划水记
- installshield脚本入门
- 计算机应用基础自主学习,计算机应用基础教学中如何培养学生的自主学习能力...
- 《东周列国志》第一百回 鲁仲连不肯帝秦 信陵君窃符救赵
- 百度账号管理静态页面
- 解决SQL适配器连接到字符集为US7ASCII的Oracle数据库的中文乱码问题
- 如何用快启动pe修复win10系统引导? 神器
- class torch.optim.lr_scheduler.LambdaLR
- 西瓜直播弹幕阅读器 python
- 一篇文章读完50篇摄影教程(托马斯的2016总结)
热门文章
- 变压器的分类_变压器的作用
- 【笔记】《编写高质量代码:改善c#程序的157个建议》-第1章 基本语言要素(SamWang)...
- C/c++ http请求
- 软件工程导论 四则运算
- 广播接收者的特点和版本差异
- django复习笔记2:models
- Android 设计模式:(一)策略模式 —— 封装行为的大局观
- void main()误区
- 孙鑫VC学习笔记:第十三讲 (三) WM_FILE_NEW消息响应原理
- 光盘显示0字节可用_AT89C2051单片机开发点钞机外接显示屏