目录

1.插入

2.查找单行

3.查找多行

4.更新

5.删除

完整示例:


1.插入

func insert()  {s := "insert into users (username,password) values(?,?)"r, err := db.Exec(s, "yjy", "123456")if err!=nil {println(err)}else {id, _ := r.LastInsertId()//默认情况下他是返回 主键且自增长的字段值,否则返回0println(id)}
}
func insert2(username string,password string)  {s := "insert into users (username,password) values(?,?)"r, err := db.Exec(s, username, password)if err!=nil {println(err)}else {id, _ := r.LastInsertId()println(id)}
}

2.查找单行

func queryOneRow()  {s := "select * from users where id=?"var u Usererr := db.QueryRow(s, 3).Scan(&u.username, &u.password, &u.id) //scan就是将查询的结果赋值给另外一个结果,注意写地址if err!=nil {println(err)}else {fmt.Println(u)}
}

3.查找多行

func queryManyRow()  {s := "select * from users"query, err := db.Query(s)var u Userdefer query.Close()if err!=nil{print(err)}else {for query.Next(){err := query.Scan(&u.username, &u.password, &u.id)if err!=nil {println(err)}else {fmt.Println(u)}}}
}

4.更新

func update()  {s := "update users set username=?,password=? where id=?"exec, err := db.Exec(s, "yes", "123456", 2)if err!=nil {println(err)}else {affected, _ := exec.RowsAffected()//改变了几行fmt.Println(affected)}
}

5.删除

func delete(id int)  {s := "delete from users where id=?"exec, err := db.Exec(s, id)if err!=nil{fmt.Println(err)}else {affected, _ := exec.RowsAffected()fmt.Println(affected)}
}

其实除了sql语句不一样之外,剩下的都差不多。

之后再main函数中直接方法名调用就可以啦~

完整示例:

package mainimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql"
)
//定义一个全局对象db
var  db  *sql.DBfunc initDB() (err error) {dsn:="root:123456@tcp(127.0.0.1:3306)/go?charset=utf8mb4&parseTime=True"//注意这里不能用:=,我们是给全局变量赋值,然后在main函数中使用全局变量dbdb,err=sql.Open("mysql",dsn)if err!=nil {return err}//尝试与数据库建立链接(校验dsn是否正确)err=db.Ping()if err!=nil {return err}return nil
}
func insert()  {s := "insert into users (username,password) values(?,?)"r, err := db.Exec(s, "yjy", "123456")if err!=nil {println(err)}else {id, _ := r.LastInsertId()//默认情况下他是返回 主键且自增长的字段值,否则返回0println(id)}
}
func insert2(username string,password string)  {s := "insert into users (username,password) values(?,?)"r, err := db.Exec(s, username, password)if err!=nil {println(err)}else {id, _ := r.LastInsertId()println(id)}
}type User struct {id intusername stringpassword string
}
func queryOneRow()  {s := "select * from users where id=?"var u Usererr := db.QueryRow(s, 3).Scan(&u.username, &u.password, &u.id) //scan就是将查询的结果赋值给另外一个结果,注意写地址if err!=nil {println(err)}else {fmt.Println(u)}
}
func queryManyRow()  {s := "select * from users"query, err := db.Query(s)var u Userdefer query.Close()if err!=nil{print(err)}else {for query.Next(){err := query.Scan(&u.username, &u.password, &u.id)if err!=nil {println(err)}else {fmt.Println(u)}}}
}
func update()  {s := "update users set username=?,password=? where id=?"exec, err := db.Exec(s, "yes", "123456", 2)if err!=nil {println(err)}else {affected, _ := exec.RowsAffected()//改变了几行fmt.Println(affected)}
}
func delete(id int)  {s := "delete from users where id=?"exec, err := db.Exec(s, id)if err!=nil{fmt.Println(err)}else {affected, _ := exec.RowsAffected()fmt.Println(affected)}
}
func main()  {fmt.Println("hellp")定义一个全局变量DB//db, err := sql.Open("mysql", "root:123456@/go")//if err != nil {//   fmt.Println("cuowu ")//}else {//  fmt.Println("chengg")//}See "Important settings" section.最大连接时长//db.SetConnMaxLifetime(time.Minute * 3)最大连接数//db.SetMaxOpenConns(10)空闲连接数//db.SetMaxIdleConns(10)////println(db)err := initDB()if err!=nil {fmt.Println(err)}else {fmt.Println("连接成功!")}//insert()//insert2("qxx","123")//queryOneRow()//queryManyRow()//update()delete(2)
}

golang数据库的操作,更新删除增加单行查找与多行查找相关推荐

  1. 数据库常用操作之删除重复数据且仅保留一条

    数据库常用操作之删除重复数据且仅保留一条 单字段操作 查询全部重复的数据 MySQL实现 Oracle实现 查询表中重复数据(id最小除外) MySQL实现 删除表中多余重复数据并且只留1条 MySQ ...

  2. mybatis对数据库的操作,删除表,新建表,修改表。

    mybatis对数据库操作 事情是这样的,今天一不小心接到一个这样的需求,调用远程接口获取数据,每周定时更新全部数据,这不挺好整的嘛!!!!!!!!! 但是,更新之前需要把之前的那个表的数据做备份,把 ...

  3. mysql受影响的行 0_为什么更新/删除成功时受影响的行返回0?

    我有声明: INSERT INTO infotbl(name, phone) VALUES('Alex', '9999999'); 并更新它: UPDATE infotbl SET name = 'A ...

  4. Go 学习笔记(55)— Go 标准库 sql (初始化数据库、插入、更新、删除数据库表、单行查询、多行查询、事务处理)

    1. 标准库说明 Go 的标准库中是没有数据库驱动,只提供了驱动接口,有很多第三方实现了驱动,我们这里选择 go-sql-driver 这个实现是目前使用最多的.github 地址是:https:// ...

  5. QTP中对数据库的操作(查询,更新和删除等)

    标题为QTP对数据库的操作,其实应该改为QTP/VBS对数据库的操作.因为QTP中就是通过vbs完成数据库操作的.以access为例. 通过ADO对数据库访问的步骤如下: a.创建一个到数据库的 AD ...

  6. 数据库级联操作mysql_Oracle数据库中的级联查询、级联删除、级联更新操作教程...

    级联查询在ORACLE 数据库中有一种方法可以实现级联查询 select * //要查询的字段 from table //具有子接点ID与父接点ID的表 start with selfid=id // ...

  7. WEB数据库管理平台kb-dms:数据库查询+更新+删除操作【六】

    数据库查询+更新+删除操作 kb-dms平台为用户提供了命令行窗口执行的功能可以进行查询等操作,还提供了快捷键的方式及在线编辑的功能等. 窗口命令行操作数据库 命令行窗口有表名提示功能及sql关键字提 ...

  8. 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

    大数据技术之_20_Elasticsearch学习_01 一 概述 1.1 什么是搜索? 1.2 如果用数据库做搜索会怎么样? 1.3 什么是全文检索和 Lucene? 1.4 什么是 Elastic ...

  9. 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作...

    一 概述1.1 什么是搜索?1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和 Lucene?1.4 什么是 Elasticsearch?1.5 Elasticsearch 的适用场景1.6 ...

  10. 31-32 python mysql-connector创建数据、crud,where,排序,删除等。PyMSQL驱动,插入操作、查询操作、更新操作、删除操作、执行

    31Python MysSQL - mysql-connector驱动 使用pip命令安装mysql-connector: python -m pip install mysql-connector ...

最新文章

  1. CSS3学习——设计优雅的数据表格
  2. Linux命令 — 设置或查看网络配置命令ifconfig
  3. IntelliJ IDEA+Mysql connecter/j JDBC驱动连接
  4. nfc sim android8,Android NFC相关资料之MifareClassic卡(读写)
  5. python中的库有哪些餐厅_2017,最受欢迎的 15 大 Python 库有哪些?
  6. ansible 基本操作(初试)
  7. 力排众议,自由软件之父 RMS 正式回归 FSF!
  8. 图像数集据增广的15+种功能总结和Python代码实现
  9. bcb6通过https接口post数据_3分钟短文 | 有挑战!PHP用1个函数实现post请求,你用哪个?
  10. XP引导Ubuntu--Ubuntu手记之系统配置
  11. Wooden Signs Gym - 101128E (DP)
  12. js高程读书笔记(1-3章)
  13. android点击按钮执行adb命令,Android 按键事件及adb命令模拟
  14. 固高运动卡的使用 5 插补运动模式之-直线插补运动
  15. html中怎么给地图添加标记,百度地图中怎么添加旗帜标记?
  16. 【algorithm】源码详解中国大陆新身份证号码算法
  17. C语言:递归实现Ackman函数
  18. 【FFmpeg杂记】音频解码输出PCM格式数据分析
  19. 特斯拉数字车钥匙卡评价
  20. S3存储桶策略(S3 Bucket Policies)

热门文章

  1. Python手册(Python Basics)--Python基础
  2. 【python文本分析】——基于股评文本的情绪分析
  3. 如何利用3Dslicer将mhd格式三维图像迅速转换为tif单张图片
  4. NUC980 DIY项目大挑战 - EtherCAT实现
  5. matlab实现聚类算法
  6. 【网络】趣谈网络协议总结
  7. css html设计网页完整代码,htmlcss完整的网页代码
  8. 计算机学院边浩东,热烈祝贺建设信息工程系学生在“新华三杯”全国大学生数字技术大赛上取得优异成绩...
  9. 地图标识符号大全_资源小结:旅游类地图汇总(8.17版)
  10. vs2019MSDN(离线帮助文档)的下载与使用