Golang官方并没有提供数据库驱动,但通过database/sql/driver包来提供了实现驱动的标准接口。可以在Github上找到很多开源的驱动。

其中go-sql-driver/mysql是一个比较推荐的驱动,其完全支持database/sql接口。

使用这个驱动, 在项目里import进:

import (

"database/sql"

_ "github.com/go-sql-driver/mysql"

)

在正式使用database/sql包之前,首先得明白sql.DB并不代表一个数据库连接,它并不会与数据库建立任何连接,也不会验证参数的合法性,要想知道DSN的合法性,需使用sql.DB实例(比如db)db.Ping() 方法, 如下:

err = db.Ping()

if err != nil {

// 错误处理

}

使用sql.Open()方法即可获得一个sql.DB实例。需要注意的是,sql.DB的设计就是用来作为长连接使用的,不应该在项目里频繁的进行Open()与Close(),提倡的做法是声明一个全局的sql.DB实例, 将其复用起来。即只Open()一次,使用直到程序结束任务。

拿到sql.DB实例之后,就可以对数据库进行操作了。

在操作数据库时,推荐做法是使用db.Prepare()对SQL语句进行预编译,这样具有较高的安全性,可在一定程度上避免诸如SQL注入这样的攻击手段。

一些示例:

/*

查询操作

*/

stmt, err := db.Prepare("SELECT `user_name` FROM `users` WHERE `id` = ?")

defer stmt.Close()

if err != nil {

//错误处理

}

var userName string

//Scan() 将结果复制到userName

err = stmt.QueryRow(1).Scan(&userName)

fmt.Println(userName)

/*

多行结果

*/

stmt, err := db.Prepare("SELECT `user_name` FROM `users` WHERE `age` = ?")

defer stmt.Close()

if err != nil {

//错误处理

}

rows, err := stmt.Query(年龄)

if err != nil {

//错误处理

}

for rows.Next() {

var userName string

if err := rows.Scan(&userName); err != nil {

//错误处理

}

}

/*

插入操作

*/

stmt, err := db.Prepare("INSERT INTO `users` (`user_name`, `age`) VALUES(?, ?)")

defer stmt.Close()

if err != nil {

//错误处理

}

stmt.Exec("名字",年龄)

/*

事务

*/

tx, err := db.Begin()

if err != nil {

//错误处理

}

defer tx.Rollback()

stmt, err := db.Prepare("")

defer stmt.Close()

if err != nil {

//错误处理

}

stmt.Exec()

err = tx.Commit()

if err != nil {

//错误处理

}

golang mysql scan_在Golang中对MySQL进行操作相关推荐

  1. linux中mysql设置大小写敏感,linux中修改mysql表名大小写敏感

    在mysql启动参数文件中配置mysql对大小写不敏感. 参数文件位置:/etc/my.cnf 1.用rpm包安装的MySQL是不会安装/etc/my.cnf文件的, 至于为什么没有这个文件而MySQ ...

  2. linux 把mysql大小写关闭_linux中设置mysql大小写不去区分方法

    linux中设置mysql大小写不去区分方法 发布时间:2020-05-14 12:01:31 来源:亿速云 阅读:191 作者:三月 本文主要给大家介绍linux中设置mysql大小写不去区分方法, ...

  3. mysql ef_在EF中使用MySQL的方法及常见问题

    有时需要在网上租用空间或数据库,Mysql成本低一些,所以想将sql server转成mysql-- 注意:在安装Mysql时要选择文字集为utf8,否则将不能使用中文(当前也可以在创建数据库时使用u ...

  4. django给mysql配主从_django中的mysql主从读写分离:一、配置mysql主从分离

    一.配置mysql主从同步的步骤: (1) 在主服务器上,必须开启二进制日志机制和配置一个独立的ID (2) 在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号 (3) 在 ...

  5. django使用mysql原始语句,Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件 mysql数据库,版本5. ...

  6. linux开启mysql外链,Linux中开启MySQL远程访问功能

    (1)确认一下3306是否对外开放,MySQL默认状态下是不开放对外访问功能的.查看的办法如下: 1 ~# netstat -an | grep 3306 2 tcp 0 0 127.0.0.1:33 ...

  7. python django mysql结果获取_Django中从mysql数据库中获取数据传到echarts方式

    尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...

  8. linux系统 安装mysql,在linux系统中安装MySQL

    1.安装 Linux 系统中自带的 MySQL 安装包 在现在常用的发行版本里都集中了MySQL安装包 CentOS系统中的YUM中包含了MySQL安装包,版本是MySQL5,rpm软件包的名称是my ...

  9. docker mysql域名访问_Docker中配置MySQL并实现远程访问

    Docker配置MySQL容器 拉取MySQL镜像 docker pull mysql:5.6 有可能会因为网络问题失败,重复尝试. 创建容器 docker run -d --name selfdef ...

  10. django mysql sql语句_Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件 mysql数据库,版本5. ...

最新文章

  1. 在IE6/7下表格td标签没有内容时不显示边框?
  2. 第九章 硬件抽象层:HAL 心得笔记
  3. android 通过广播唤醒被杀死的app
  4. adb connect 192.168.1.10 failed to connect to 192.168.1.10:5555
  5. php 导出mysql 结构_导出结构和数据(如phpmyadmin)
  6. APPCAN学习笔记003---原生开发与HTML5技术
  7. 关于使用mac聚焦搜索无法搜索软件的情况
  8. OUC_Summer Training_ DIV2_#11 722
  9. Linux 怎么找回管理员密码?
  10. 操作系统server 2012 r2 安装简体中文语言包
  11. 高维球体的体积是多少
  12. 青岛大学计算机学院住宿条件,青大学霸宿舍 | 不一般的经济女神与“程序猿”的考研路...
  13. C语言及程序设计初级—分离整数与小数部分
  14. Android eclipse常见错误开发总结
  15. 极限挑战 极致突破——奇安信的2022
  16. win10设置pin一直转圈_Win10 自带手机投屏功能,80% 的人居然都不知道
  17. linux dumpe2fs命令
  18. 重磅!西安交通大学使用脑机接口技术实现了高位截瘫失语患者“说”出“心里话”
  19. python使用loaddata_Python data.load_data方法代码示例
  20. Prometheus组件详解

热门文章

  1. Linux学习笔记 --组管理和权限管理
  2. Tensorflow学习笔记-第二节程序结构
  3. java的访问修饰符
  4. matlab2014启动很慢,matlab启动慢的解决方法
  5. java环境安装 linux,Linux Java环境配置安装
  6. 计算机应用基础 东师 离线,奥鹏东师秋季计算机应用基础离线作业答案
  7. select 获取option中其他的属性的值
  8. 【Android】笔记
  9. Win10 开启移动热点 WiFi 的简单方法
  10. winscp怎么更改linux权限,Linux下,WinSCP普通用户登录sftp后切换到root权限 教程