开发环境:windows7 64位、编辑器是sublime text3。 直接添上代码了,代码中有注释。 注:需要提前下载github.com/go-sql-driver/mysql,下面的程序才会运行成功。 package main

import ( "database/sql" //这个感觉有点类似java中的java.sql.* "fmt" _ "github.com/go-sql-driver/mysql" //这个感觉类似于jdbc )

func main() { //主函数,调用不同的方法 //Insert() //Delete() //Update() //Query() QueryWithParams() //QueryWithParam() }

//得到数据库的连接,并将连接返回 func Init() (*sql.DB, error) { //返回类型有俩个,第一个是数据库的连接(指针),第二个是错误类型 //得到数据库的连接,"test"表示的是数据库名称 db, err := sql.Open("mysql", "root:dmj2010@tcp(localhost:3306)/test?charset=utf8") if err != nil { //err的值不是nil那么表示打开数据库连接失败 fmt.Println("打开数据库连接失败_" + err.Error()) return nil, err } return db, nil //返回的错误类型是nil,表示成功得到数据库连接 }

//向数据库中插入数据 func Insert() { //这个函数没有参数,也没有返回值 db, err := Init() //得到数据库连接

if err != nil { //if语句的判断语句不用加括号

fmt.Println("得到数据库连接有问题")

return

}

sql := "insert into user(name,age) values(?,?)"

stmt, err := db.Prepare(sql)

if err != nil {

fmt.Println("错误——" + err.Error())

return

}

defer stmt.Close() //表示当程序退出当前所在的函数(即Insert())时关闭stmt

defer db.Close() //表示当程序退出时当前所在的函数(即Insert())时关闭数据库连接db

fmt.Println("开始插入数据")

stmt.Exec("张三", 20) //设置参数并进行插入数据

stmt.Exec("李四", 45) //设置参数并进行插入数据

stmt.Exec("段幕", 36) //设置参数并进行插入数据

fmt.Println("插入结束")

}

//删除数据 func Delete() { db, err := Init() if err != nil { fmt.Println("得到数据库连接结果失败——" + err.Error()) return } sql := "delete from user where id=?" stmt, err := db.Prepare(sql) if err != nil { fmt.Println("删除失败——" + err.Error()) return } defer stmt.Close() defer db.Close()

stmt.Exec(1) //设置参数,即id的值为1

stmt.Exec(2) //设置参数,即id的值为2

}

//更新数据 func Update() { db, err := Init() if err != nil { fmt.Println("得到数据库连接结果失败——" + err.Error()) return } sql := "update user set name=?,age=? where id=?" stmt, err := db.Prepare(sql) if err != nil { fmt.Println("更新失败——" + err.Error()) return } defer stmt.Close() defer db.Close()

stmt.Exec("木婉清", 123, 3)

stmt.Exec("曾小邪", 18, 4)

stmt.Exec("其二", 23, 5)

}

//查询数据 func Query() { db, err := Init() if err != nil { fmt.Println("得到数据库连接结果失败——" + err.Error()) return }

rows, err := db.Query("select * from user")

if err != nil {

fmt.Println("查询失败——" + err.Error())

return

}

for rows.Next() { //rows.Next()返回的是bool值

var id int //声明id为int型

var name string //声明name为string型

var age int //声明age为int型

err := rows.Scan(&id, &name, &age)

if err != nil {

fmt.Println("rows.Scan失败!——" + err.Error())

return

} //if

//fmt.Printf(....) 这个有点类似C中的printf(...)

fmt.Printf("id:%d name:%s age:%d \n", id, name, age) //%d表示显示整形数值 %s表示显示字符串

} //for

defer rows.Close()

defer db.Close()

}

//查询数据,有参数设置&&返回值有多行 func QueryWithParams() { db, err := Init() if err != nil { fmt.Println("得到数据库连接结果失败——" + err.Error()) return }

rows, err := db.Query("select * from user where age=?", 20)

if err != nil {

fmt.Println("查询失败——" + err.Error())

return

}

for rows.Next() { //rows.Next()返回的是bool值

var id int

var name string

var age int

err := rows.Scan(&id, &name, &age)

if err != nil {

fmt.Println("rows.Scan失败!——" + err.Error())

return

} //if

//fmt.Printf(....) 这个有点类似C中的printf(...)

fmt.Printf("id:%d name:%s age:%d \n", id, name, age) //%d表示显示整形数值 %s表示显示字符串

} //for

defer rows.Close()

defer db.Close()

}

//查询数据,有参数设置&&返回值最多只有一行 func QueryWithParam() { db, err := Init() if err != nil { fmt.Println("得到数据库连接结果失败——" + err.Error()) return }

var id int

var name string

var age int

row := db.QueryRow("select * from user where id=?", 3)

err = row.Scan(&id, &name, &age)

if err != nil {

fmt.Println("查询失败——" + err.Error())

return

}

//fmt.Printf(....) 这个有点类似C中的printf(...)

fmt.Printf("id:%d name:%s age:%d \n", id, name, age) //%d表示显示整形数值 %s表示显示字符串

defer db.Close()

}

学会对mysql的增删改查_Go实现对MySQL的增删改查相关推荐

  1. koa2 mysql增删改查_koa2实现对mysql的增删改查函数封装

    // 项目开始先造一个简单的node服务器server.js: const Koa = require('koa'); const Path= require('path'); const Stati ...

  2. c#实现对sqlserver的增删改操做 1117

    c#实现对sqlserver的增删改操做 1117 cmd对象的ExecuteNonQuery方法 ExecuteNonQuery方法 基本情况 案例 增加 修改 删除

  3. 超详细的hibernate实现对MySQL的CRUD

    超详细的hibernate实现对MySQL的CRUD 文章目录 超详细的hibernate实现对MySQL的CRUD 前言 一.操作前的准备 1.创建maven项目 2.导入maven依赖 3.创建实 ...

  4. 【五一创作】使用Scala二次开发Spark3.3.0实现对MySQL的upsert操作

    使用Scala二次开发Spark实现对MySQL的upsert操作 背景 在我们的数仓升级项目中,遇到了这样的场景:古人开发的任务是使用DataStage运算后,按照主键[或者多个字段拼接的唯一键]来 ...

  5. Go web 开发数据库管理平台,利用远程过程调用(RPC)实现对MySQL数据库的管理和使用

    Go web 开发数据库管理平台,利用远程过程调用(RPC)实现对MySQL数据库的管理和使用 前言 做DBA,最基本的工作就是需要管理公司的数据库系统.工作中,常常需要维护的数据库数量是非常多的.小 ...

  6. maven mybatis mysql_Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问...

    标签: 本篇内容还是建立在上一篇Java Web学习系列--Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Ja ...

  7. 通过servlet来实现对Mysql进行连接、插入、修改、删除操作

    通过servlet来实现对Mysql进行连接.插入.修改.删除操作 来自:http://blog.sina.com.cn/s/blog_4bea2fb10100f3w3.html package Se ...

  8. Qt实战案例(28)——利用QSQL相关类实现对MySQL数据库的基本操作及相关设置详解

    目录 一.项目介绍 二.项目基本配置 2.1 安装MySQL 2.2 创建Qt项目 2.3 移动libmysql.dll文件 三.UI界面设计 四.主程序实现 4.1 pro文件 4.2 main.c ...

  9. 【java】用javaSE来实现对mysql数据库的增删改查

    主程序: import Bean.StudentBean; import Impl.StudentImpl; public class T7 {     public static void main ...

最新文章

  1. cv2.threshold() 阈值:使用Python,OpenCV进行简单的图像分割
  2. 数据库实例(统计最高分学生信息,不及格率等等)
  3. 详解DPoS共识算法
  4. linux文件内容打印成二进制,如何在二进制文件中只打印可打印字符(相当于Linux下的字符串)?...
  5. 【剑指Offer学习】【面试题40:数组中仅仅出现一次的数字】
  6. matlab 模拟风,三维空间相关风场的计算机模拟及Matlab程序实现
  7. Decoders Matter for Semantic Segmentation: Data-Dependent Decoding Enables Flexible Feature Aggregat
  8. Android Studio 写个单元测试用例,就是这么方便
  9. MT6573驱动开发日志之touchpanel
  10. 【转】TabHost详解
  11. matlab实对称矩阵对角化,基于Matlab的实对称矩阵对角化
  12. 2021-2022-1 20212810《Linux内核原理与分析》第一周作业
  13. PCIe及PCB设计要求
  14. Transact-SQL编程
  15. 一些自身工作经历和感悟,随手写的,很乱
  16. MPC多方安全计算DT(决策树)实现
  17. 解决windows10 时间轴灰色的活动历史记录无法删除的问题
  18. iib 里面wsdl调用的坑
  19. timer cancel_Java Timer cancel()方法与示例
  20. Adobe Flash Player ActiveX 不能安装

热门文章

  1. python等差数列末项计算_Python 30道高频面试题及详细解答
  2. 南航里程每年清空吗_航空里程被盗用,多位明星中招!隐私保护真的这么难吗?...
  3. datatables屏蔽警告弹窗
  4. 一 Struts2 开发流程
  5. RPAD()和LPAD()函数进行字符串的填充
  6. 在使用Cocos2d-JS 开发过程中需要用到的单体设计模式
  7. 引入extThree20JSON之后,怎么在工程中使用
  8. 机房USB被禁用的方法
  9. 用react-service做状态管理,适用于react、react native
  10. Torque2D MIT 实战记录: 塔防进度(3)