Golang 数据库操作
一.cmd使用数据库
1.mysql -uroot -p
2.输入密码 root
3.创建一个数据库 :create database go_test
4.使用改数据库:use go_test
5.创建一个表并插入一些数据:
CREATE TABLE user (id INTEGER PRIMARY KEY AUTO_INCREMENT,username VARCHAR (20),PASSWORD VARCHAR (20)
)INSERT INTO user_tbl (username, PASSWORD) VALUES ("tom", "123456")
INSERT INTO user_tbl (username, PASSWORD) VALUES ("Bob", "999999")
6.查看是否成功:select * from user;
成功
二.Golang 数据库的基本操作
package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBfunc initDB() (err error) {dsn := "root:root@tcp(127.0.0.1:3306)/go_test?charset=utf8mb4&parseTime=True"db, err = sql.Open("mysql", dsn)fmt.Printf("db: %v\n", db)if err != nil {fmt.Printf("err: %v\n", err)return err}// 尝试去链接err2 := db.Ping()if err2 != nil {fmt.Printf("err2: %v\n", err2)return err2}return nil}func Test() {d, err := sql.Open("mysql", "root:root@/go_test")if err != nil {fmt.Printf("err: %v\n", err)}d.SetConnMaxLifetime(time.Minute * 3)d.SetMaxOpenConns(10)d.SetMaxIdleConns(10)fmt.Printf("d: %v\n", d)
}// 尝试连接
func getCon() {err := initDB()if err != nil {fmt.Printf("err: %v\n", err)} else {fmt.Printf("\"连接成功\": %v\n", "连接成功")}
}// 插入数据
func insertData() {// SQL语句sqlStr := `insert into user(username,password) vaues ("Bob","999999")`ret, err := db.Exec(sqlStr)if err != nil {fmt.Printf("insert failed, err:%v\n", err)return}// 新插入数据的idstheID, err := ret.LastInsertId() if err != nil {fmt.Printf("get lastinsert ID failed, err:%v\n", err)return}fmt.Printf("insert success, the id is %d.\n", theID)
}// 查询一条用户数据
func queryRowDemo() {// 查询的SQL 语句sqlStr := "select username, password from user where id=?"// 确保QueryRow之后调用Scan方法,否则持有的数据库链接不会被释放var username, password stringerr := db.QueryRow(sqlStr, 1).Scan(&username,&password)if err != nil {fmt.Printf("scan failed, err:%v\n", err)return}fmt.Printf("username:%s password:%s\n",username, password)
}
// 删除语句
func delData() {sql := "delete from user where username =?"ret, err := db.Exec(sql, "tom")if err != nil {fmt.Printf("删除失败, err:%v\n", err)return}rows, err := ret.RowsAffected()if err != nil {fmt.Printf("删除行失败, err:%v\n", err)return}fmt.Printf("删除成功, 删除的行数: %d.\n", rows)
}// 更新语句
func updateData() {sql := "update user set username=?, password=? where username=?"ret, err := db.Exec(sql, "tom", "123456", "Alice")if err != nil {fmt.Printf("更新失败, err:%v\n", err)return}rows, err := ret.RowsAffected()if err != nil {fmt.Printf("更新行失败, err:%v\n", err)return}fmt.Printf("更新成功, 更新的行数: %d.\n", rows)
}
func main() {// Test()getCon()// insertData()// queryRowDemo() // delData()updateData()
}
Golang 数据库操作相关推荐
- golang:闲谈数据库操作
今天简单看了下database/sql包,稍微总结下关于golang的数据库操作的一些东西,如有错误的地方,欢迎指出. import ( "database/sql" _ &quo ...
- golang 数据库 连接与连接池
database/sql database/sql是golang的标准库之一,它提供了一系列接口方法,用于访问关系数据库.它并不会提供数据库特有的方法,那些特有的方法交给数据库驱动去实现. datab ...
- 使用Golang驱动操作MongoDB
微信公众号:运维开发故事,作者:wanger 上篇文章我们介绍了使用pymongo对MongoDB进行CRUD,本篇将介绍使用Golang驱动操作MongoDB 安装MongoDB驱动程序 mkdr ...
- Golang 数据库 boltDB
Golang 数据库 boltDB 文章目录 Golang 数据库 boltDB 一.boltDB 介绍 1. boltDB 简介 2. boltDB 特点 二.boltDB 安装 1. 安装 Bol ...
- 【gin学习笔记】07初识GROM使用GORM进行数据库操作
本文学习视频https://www.bilibili.com/video/BV1Bz411v78U/?spm_id_from=333.788 gorm中文官方文档 https://jasperxu.c ...
- Python的数据库操作(Sqlalchemy)
ORM 全称 Object Relational Mapping, 翻译过来叫对象关系映射.简单的说,ORM 将数据库中的表与面向对象语言中的类建立了一种对应关系.这样,我们要操作数据库,数据库中的表 ...
- 便捷,轻巧的Groovy数据库操作
本文主要介绍Groovy对数据的CRUD操作,熟悉groovy.sql包,测试使用的数据库是H2. 1.数据库连接配置 //数据库连接配置 def db = [url:'jdbc:h2:mem:gro ...
- Django模型之数据库操作-查询
六.数据库操作-查询 6.1基础条件查询 1 基本查询 get查询单一结果,如果不存在会抛出模型类.DoesNotExist异常. all查询多个结果.[返回的所有结果是列表] count查询结果数量 ...
- 命令行客户端MySQL基本命令的使用(登录、登出、数据库操作的SQL语句、表结构的SQL语句、表数据操作的SQL语句)
1. 登录和登出数据库 登录数据库: 输入下面命令: mysql -uroot -p 说明: -u 后面是登录的用户名 [写成-u root也是可以的] -p 后面是登录密码, 如果不填写, 回车之 ...
最新文章
- 如何在Ubuntu中安装java jdk
- 考前多熟记的知识点(1)~(3)《信息系统项目管理师软考辅导》
- libevent之Reactor模式详解
- 可以公开访问的 SAP gateway demo system ES5/002
- 【转】Unix环境高级程序设计入门----文件系统的相关编程(上)
- 08面向对象编程风格
- win7系统删除多余的系统服务操作
- linux网络测速qerf,www.cpg.com.ph
- 鸡兔同笼问题c语言编程,鸡兔同笼问题C语言程序编写
- 微信分享等配置,微信授权失败讲解
- IDEA怎么换背景颜色
- 将linux操作系统迁移到另一个固态硬盘上
- SVG公众号排版 | 快速解决视频号美化出现“点赞信息”
- win10 无线鼠标卡顿,跳帧
- LeetCode 264. 丑数 II--动态规划
- opnet学习001,入门的好例子
- 【新国产化】采用开源技术的云计算厂商,能算国产化品牌吗?
- 通过设置svn服务端钩子强制提交注释和限制指定类型文件提交
- 【优化求解】基于遗传算法求解列车交路方案matlab代码
- TextField 与FTE的使用情景
热门文章
- Java源码-弹球小游戏(Pin Ball)
- 构建docker镜像并上传到阿里云仓库
- 自从拿下我人生中第一个Offer——网易游戏!腾讯,字节,阿里,小米,京东大厂Offer拿到手软!
- HBase学习笔记(二)——LSM树(Log-Structured Merge-Tree)是什么?
- 想跳槽转行升职加薪?关于年后求职的8个建议
- 递归计算(偶数求和)
- python自动化下载_selenium+python自动化98--文件下载弹窗处理(PyKeyboard)
- VSCode配置C/C++环境
- windows操作系统 uefi启动
- 如何在游戏中设计等构建筑?