目录

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. 哪些听起来像段子一样的故事?
  2. linux的运维管理UNIT3
  3. 携手广通,聚焦ITIL——BROADA举办首届BTE认证培训
  4. 我在这里,等你的故事【小废回家看看】
  5. A wizard’s guide to Adversarial Autoencoders: Part 2, Exploring latent space with Adversarial Autoen
  6. EduCoder Linux文件/目录高级管理三
  7. matlab和python中的svd分解的区别
  8. SpringCloud之路由网关zuul(五)
  9. GPU Gems1 - 26 OpenEXR图像文件格式与HDR(The OpenEXR Image File Format and HDR)
  10. html不支持ie7,解决IE6/IE7/IE8不支持before,after问题
  11. 早知道就好了!这些编程入门神器,赶紧用起来
  12. IDEA集成Scala图文教程详细步骤
  13. php 点击下拉显示内容,php+ajax实现仿百度查询下拉内容功能示例
  14. 服务器搭建对讲机系统,传统对讲机系统如何接入到融合通信系统?
  15. 命令行中,变量 date time 格式化设定
  16. 图像处理十:图像反色
  17. 山大824计算机基础,山大考研辅导班:山东大学2020年824计算机基础考研自命题科目考试大纲...
  18. qtcreator安装及配置
  19. java中类加载器ClassLoader,双亲加载机制,启动类加载器,应用类加载器,线程上下文类加载器
  20. TextMeshPro的超链接

热门文章

  1. 计算机组成第五章课后答案,计算机组成原理第五章答案
  2. 开发类 - Fiddler 中文版 链接手机 进行抓包
  3. 遗传算法的Python实现(通俗易懂)
  4. 优班图linux 命令,Linux 常用命令
  5. linux系统小米球(ngrok)实现内网穿透
  6. nginx强制下载txt等文件
  7. Easyui按钮图标
  8. 电商常用三大数据分析模型--深入浅出
  9. 无人机群编队分析的定位问题 分析与思考-1(数学建模竞赛2022年B题)
  10. 《我是一只IT小小鸟》会员书评