go语言mysql操作_使用Go语言操作MySQL数据库的思路与步骤

最近在做注册登录服务时,学习用Go语言操作MySQL数据库实现用户数据的增删改查,现将个人学习心得总结如下,另外附有代码仓库地址,欢迎各位有兴趣的fork。

软件环境:Goland、Navicat for MySQL。

一、实现思路

1,我的总体设计思路是先写出连接数据库和关闭数据库的逻辑,再建立四个分支,根据用户的选择分别进入增删改查的操作;

func DBstart() {

db,_= sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/dbtest?charset=utf8") //dbtest为我新建立的数据库名

fmt.Println("mysql start succcessed !")

}

func DBclose(){

//关闭数据库

db.Close()

fmt.Println("database closed")

}

2,增加的操作

输入对应的数据

fmt.Println("请输入用户ID:")

fmt.Scan(&Userid)

fmt.Println("请输入名字:")

fmt.Scan(&Username)

fmt.Println("请输入部门:")

fmt.Scan(&Departname)

fmt.Println("请输入进部门时间")

fmt.Scan(&Created)

//插入数据

stmt,err := db.Prepare("INSERT userif SET userid=?,username=?,departname=?,created=?")

CheckErr(err)

res,err := stmt.Exec(Userid,Username,Departname,Created)

CheckErr(err)

id,err := res.LastInsertId()

fmt.Println(id)

3,查询的操作

rows,err := db.Query("SELECT * FROM userif")

CheckErr(err)

for rows.Next(){

err = rows.Scan(&Id,&Userid,&Created,&Departname,&Username)

CheckErr(err)

fmt.Println(Userid)

fmt.Println(Username)

fmt.Println(Departname)

fmt.Println(Created)

}

4,更新的操作

根据提示输入要更新的内容,然后转到对应的更新语句

fmt.Println("请输入要查询的用户ID:")

fmt.Scan(&Userid)

fmt.Println("请输入要更新的内容:a-名字;b-部门;c-进部门的时间:")

var s string

fmt.Scan(&s)

switch s {

case "a":

fmt.Println("请输入要更改用户ID为%d的名字",Userid)

fmt.Scan(&Username)

fmt.Println(Username)

fmt.Println(Userid)

stmt,err := db.Prepare("UPDATE userif SET username=? where userid=?")

CheckErr(err)

......//以此类推

}

5,删除的操作

fmt.Println("请输入要删除的用户ID:")

fmt.Scan(&Userid)

stmt,err := db.Prepare("DELETE from userif where userid=?")

CheckErr(err)

res,err := stmt.Exec(Userid)

CheckErr(err)

affect,err := res.RowsAffected()

CheckErr(err)

fmt.Println(affect)

二、注意点

1,在查找操作中注意输入与输出对应的列名是否与MySQL数据中的一致,不然可能会造成如下错误

763303845ef75bc2e8c9212dbc8e4fdd.png

三、参考资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习嵌入式C语言的6个层级,你在哪一层?

C语言可以说是一种经典的编程语言,没有C语言就没有今天的各种操作系统。C语言是基础,那么你掌握了多少?新手级别学习目的:过计算机二级,考证,应付期末考试。需要掌握的程度:掌握C语言的基本语法…

intellij idea_IntelliJ IDEA内部设计

intellij ideaIntelliJ IDEA的第一个版本于2001年1月发布,当时它是第一个集成了高级代码导航和代码重构功能的Java IDE之一。 2009年,JetBrains开源了其社区版本 。 从那时起,创建了许多基于它的IDE,例如Google的Android Studio。…

mysql索引下沉_MySQL 5.6 索引条件下推优化

索引下推优化是MySQL5.6版本中新加的功能。索引条件下推(ICP)是对MySQL使用索引从表中检索行的情况的优化。如果没有ICP,存储引擎会遍历索引以查找基表中的行,并将它们返回给MySQL服务器,由server层再做一波筛选。启用ICP后,如果只…

C语言 | 函数执行成功时,return 1 还是return 0?

今天分享的内容是关于函数执行成功,返回0还是1的讨论~基本上,没有人会将大段的C语言代码全部塞入 main() 函数,更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数。…

jcache_窥探JCache API(JSR 107)

jcache这篇文章从较高的层次介绍了JCache API,并提供了一个预告片–仅够您(希望)开始对此发痒了;-) 在这篇文章中……。 JCache概述 JCache API,实现 JCache API支持的(Java)平台 快速了解O…

redis 启动加载mysql_Redis分析系列:启动加载过程

从本篇文章开始(命名为Redis分析系列),将会通过分析Redis的源代码(以Redis 2.2.0 RC1为准),来对它的内部实现做一些探讨。本文主要介绍Redis启动加载过程,总体上可以分为如下几步:1. 初始化全局服务器配置2. 加载配置文件(如果指定…

c 文件怎么进行读取和写入操作?

C >>和<<读写文本文件&#xff1a;fstream 或者 ifstream 类负责实现对文件的读取&#xff0c;它们内部都对 >> 输出流运算符做了重载&#xff1b;同样&#xff0c;fstream 和 ofstream 类负责实现对文件的写入&#xff0c;它们的内部也都对 << 输出流…

mysql+误操作怎么恢复_Mysql误操作恢复流程

一、开启binlog。show variables like log_bin;#vim /etc/my.cnf在[mysqld]中加入log-bin mysql-binlog-bin /usr/local/mysql/log/mysql-bin.log重启mysql服务#service mysqld stop#service mysqld start二、数据写入建库create database …

drools6.5_Drools 6.2.0.Final发布

drools6.5我们很高兴地宣布最新&#xff0c;最出色的Drools 6.2.0.Final版本。 特别是此发行版更加注重改进的可用性和功能&#xff0c;这些功能使项目更易于使用&#xff08;和采用&#xff09;。 新功能包括对工作台UI的大量改进&#xff0c;对社交活动和插件管理的支持以及…

c程序编写x的y次方的方法

c程序怎么编写x的y次方?C语言pow()函数&#xff1a;求x的y次方&#xff08;次幂&#xff09;头文件&#xff1a;#include pow() 函数用来求 x 的 y 次幂&#xff08;次方&#xff09;&#xff0c;其原型为&#xff1a;double pow(double x, double y);pow()用来计算以x 为底的…

python redis pipeline使用方法_python使用pipeline批量读写redis的方法

用了很久的redis了。随着业务的要求越来越高。对redis的读写速度要求也越来越高。正好最近有个需求(需要在秒级取值1000的数据)&#xff0c;如果对于传统的单词取值&#xff0c;循环取值&#xff0c;消耗实在是大&#xff0c;有小伙伴可能考虑到多线程&#xff0c;但这并不是最…

jboss fuse 教程_JBoss Fuse –一些鲜为人知的技巧

jboss fuse 教程TL; DR 将Java静态调用公开为Karaf Shell本机命令 在部署时覆盖OSGi标头 在使用OSGi片段部署时间后覆盖OSGi标头 将Java静态调用公开为Karaf Shell本机命令 作为必须与支持人员和客户进行协作的软件工程师的一部分&#xff0c;我经常发现自己需要从无法访问…

8条嵌入式C语言编程小知识总结

1. 流水线被指令填满时才能发挥最大效能&#xff0c;即每时钟周期完成一条指令的执行(仅指单周期指令)。如果程序发生跳转&#xff0c;流水线会被清空&#xff0c;这将需要几个时钟才能使流水线再次填满。因此&#xff0c;尽量少的使用跳转指令可以提高程序执行效率&#xff0c…

c语言函数的三种调用方式是什么?

函数的三种调用方式&#xff1a;1、函数作为表达式中的一项出现在表达式中&#xff0c;例“zmax(x,y)”&#xff1b;2、函数作为一个单独的语句&#xff0c;例“printf("%d",a)”&#xff1b;3、函数作为调用另一个函数时的实参&#xff0c;例“printf("%d"…

CF1913D. Array Collapse [dp+单调栈+前缀和]

传送门 [前题提要]:感觉dp还是很显然的,感觉单调栈也不是很难想,但是VP的时候脑子比较乱,dp方程想偏了,没写出来… 看完题目,不难发现应该存在一种递推关系.因为会发现最后剩下来的必然是原序列的一种子序列,然后这种子序列计数的问题.应该想到使用dp计数. 刚开始我的想法是使…

弱口令扫描工具mysql ftp_基于端口的弱口令检测工具--iscan

iscan: 基于端口的弱口令检测工具亲手打造了一款基于端口的弱口令检测工具&#xff0c;使用python进行编写&#xff0c;主要可以用于渗透测试中常见服务端口弱口令的检测。目前支持以下服务&#xff1a;系统弱口令&#xff1a;ftp、ssh、telnet、ipc$数据库弱口令&#xff1a;m…

javafx 剪切板_JavaFX技巧18:路径剪切

javafx 剪切板我最近注意到&#xff0c;我致力于ControlsFX项目的PopOver控件无法正确剪切其内容。 当我为FlexCalendarFX框架开发手风琴弹出窗口时&#xff0c;这一点变得显而易见。 每当最后一个标题窗格扩展时&#xff0c;其底角不再是圆角而是正方形。 在标题窗格中放置一个…

用于单片机的几种C语言算法

单片机主要作用是控制外围的器件&#xff0c;并实现一定的通信和数据处理。虽然单片机不擅长实现算法和进行复杂的运算&#xff0c;但在某些特定场合&#xff0c;不可避免地要用到数学运算。比如&#xff1a;在单片机进行数据采集时&#xff0c;会遇到数据的随机误差&#xff0…

jmh 基准测试_JMH:如何设置和运行JMH基准

jmh 基准测试健康警告&#xff01; 这篇文章描述了如何设置和运行简单的JMH基准测试。 众所周知&#xff0c;微基准测试很难正确设置&#xff0c;即使您确实正确设置了&#xff08;通过使用JMH之类的工具&#xff09;&#xff0c;它们仍然会产生误导。 仅仅因为您的代码在极端孤…

java super是什么意思_java中Super到底是什么意思?必须举例说明!

[学习笔记]3."超"关键字(super keyword)Super是一个参考(或说指针)指向他紧邻的父类(见下面的例子)。用super可以指向被隐藏的父类的同名成员。3.1 super指向父类的成员注意&#xff1a; 下例中&#xff1a;子类和父类都有i&#xff0c;我们一共有两个i&#xff0c;用…