go-mysql数据-查询–输入数据–实战2
注意点,在这里‘bufio.NewReader’读取数据的时候,把系统的回车符号带入到变量中了,这个需要关注下,带入的是"\n","\r"两个符号,所以需要处理下这两个符号

使用步骤,在主函数那边直接调用’QueryRowDemoStdin()'即可自动进行数据库的联机,根据提示进行数据的查询

 input:=bufio.NewReader(os.Stdin)inputstr,err1:=input.ReadString('\n')inputbyte:=[]byte(inputstr)  //转换为字节切片inputNewbyt:=inputbyte[:len(inputbyte)-2]  //把读入的字符串中的‘\r’,‘/n’删除掉,变为原来的输入内容inputstrNew:=string(inputNewbyt)

实际代码

package m8dbimport ("bufio""database/sql""fmt"_ "github.com/go-sql-driver/mysql""os""strconv"
)//先定义好一个结构体来存储user表的数据。
type user struct {id intage intname string}//Open函数可能只是验证其参数格式是否正确,实际上并不创建与数据库的连接。如果要检查数据源的名称是否真实有效,应该调用Ping方法。
//返回的DB对象可以安全地被多个goroutine并发使用,并且维护其自己的空闲连接池。因此,Open函数应该仅被调用一次,很少需要关闭这个DB对象。// 定义一个全局对象db
var db *sql.DB
// 定义一个初始化数据库的函数
func initDB()(err error){dsn:="root:123456@tcp(127.0.0.1:3306)/gotestdb"// 不会校验账号密码是否正确// 注意!!!这里不要使用:=,我们是给全局变量赋值,然后在main函数中使用全局变量dbdb,err=sql.Open("mysql",dsn)if err!=nil{return err}//defer db.Close()// 尝试与数据库建立连接(校验dsn是否正确)err=db.Ping()if err!=nil{return err}return nil
}func Calldb(){err:=initDB()if err!=nil{fmt.Print("init db failed err:%v\n",err)return}fmt.Println("调用数据库成功!")
}func QueryRowDemoStdin(){Calldb()   //查询数据前,需要初始化下数据库sqlstr:="select id,name,age from user where id=?"//根据输入查询数据库内容信息fmt.Print("请输入查询数据的id编号:")input:=bufio.NewReader(os.Stdin)inputstr,err1:=input.ReadString('\n')inputbyte:=[]byte(inputstr)  //转换为字节切片inputNewbyt:=inputbyte[:len(inputbyte)-2]  //把读入的字符串中的‘\r’,‘/n’删除掉,变为原来的输入内容inputstrNew:=string(inputNewbyt)if err1!=nil{fmt.Println(err1)return}id,err2:=strconv.Atoi(inputstrNew)   //把输入的字符串转换为整数fmt.Printf("#%v#",id)if err2!=nil{fmt.Print("num strconv failed!")}var u userrow:=db.QueryRow(sqlstr,id)err:=row.Scan(&u.id,&u.name,&u.age)if err!=nil{fmt.Printf("scan failed,err:%v\n",err)return}fmt.Printf("id:%d name:%s age:%d\n",u.id,u.name,u.age)}

多行【多条语句】的查询

//优化版本
func QueryMultiRowDemoUpdate(){Calldb()   //调用同包下的初始化数据库的操作sqlstr := "select id, name, age from user where id > ?"//通过‘’'\n'进行获取数据,注意点,注意把数据中'/r,/n'删除掉fmt.Println("请输出要查询大于XX数的id:")inputFile:=bufio.NewReader(os.Stdin)str,err:=inputFile.ReadString('\n')if err!=nil{fmt.Println("read failed",err)}//字符转换为切片,删除'/n','/r'字符---》newbyte:=bytestr[:len(bytestr)-2]bytestr:=[]byte(str)newbyte:=bytestr[:len(bytestr)-2]newstr:=string(newbyte)//把字符转换为数字id,_:=strconv.Atoi(newstr)rows,err:=db.Query(sqlstr,id)if err!=nil{fmt.Println("query failed,err:%v\n",err)return}// 非常重要:关闭rows释放持有的数据库链接defer rows.Close()// 循环读取结果集中的数据for rows.Next(){var u usererr:=rows.Scan(&u.id,&u.name,&u.age)if err!=nil{fmt.Println("scan failed ,err:%v/n",err)return}fmt.Printf("id:%d name:%s age:%d\n",u.id,u.name,u.age)}}

附加内容:

1.数据库的创建:

CREATE DATABASE gotestdb;  //创建数据库
use gotestdb;   //切换到数据库

2.数据表的创建:

CREATE TABLE `user` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT,`name` VARCHAR(20) DEFAULT '',`age` INT(11) DEFAULT '0',PRIMARY KEY(`id`)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

go-mysql数据-查询--输入数据--实战2相关推荐

  1. 9.MySQL数据查询SQL

    9.MySQL数据查询SQL 语法格式: select 字段列表|* from 表名 [where 搜索条件] [group by 分组字段 [having 分组条件]] [order by 排序字段 ...

  2. limit mysql 取最后_更优美的 limit 使用方法 (limit 对 mysql 数据查询的性能影响)

    更优美的 limit 使用方法(limit 对 MySQL 数据查询的性能影响) 本文在 zhangyachen 的基础上重新排版 来源:zhangyachen 一,前言 首先说明一下 MySQL 的 ...

  3. MySQL数据查询语句

    MySQL数据查询语句 MySQL 表单查询是指从一张表的数据中查询所需的数据,主要有查询所有字段.查询指定字段.查询指定记录.查询空值.多条件的查询.对查询结果进行排序分组等. 查询结构 SELEC ...

  4. 【227期】面试官:MySQL 数据查询太多会 OOM 吗?

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

  5. 03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解

    主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实 ...

  6. PHP中mysql查询全部过程_PHP到MySQL数据查询过程概述_MySQL

    摘要 本文概述了从PHP层发起mysql查询请求到mysql server 返回结果集的工作流程,并简单描述了各层可能涉及到的动作和组件.从全局把握整个交互过程. PHP层到MySQL层 Php到sq ...

  7. 艺赛旗(RPA)Mysql 数据查询慢 - 索引调优 Explain 用法

    艺赛旗 RPA8.0全新首发免费下载 点击下载 http://www.i-search.com.cn/index.html?from=line1 在日常工作中,我们会有时会开慢查询去记录一些执行时间比 ...

  8. mysql数据查询——复杂查询

    <实验五 数据查询--复杂查询>实验说明 一. 适用课程:<数据库原理与应用> 实验学时:3 二.实验目的: (1) 掌握SELECT语句的语法格式: (2) 熟练运用SELE ...

  9. MySQL数据查询—MysqlDay2

    目录 1.条件查询(上) 2.条件查询(下) 3.聚合函数(上) 4.聚合函数(下) 5.分组与分页 6.连接查询 7.子查询 8.保存查询结果 重点: 条件查询.分组分页.连接查询 难点: 条件查询 ...

  10. mysql 连接查询_Swoole 实战:MySQL 查询器的实现(协程连接池)

    Swoole 实战:MySQL 查询器的实现(协程连接池) 需求分析 本篇我们将通过 Swoole 实现一个自带连接池的 MySQL 查询器: 1. 支持通过链式调用构造并执行 SQL 语句: 2. ...

最新文章

  1. JAVA连接SQL Server数据库的端口配置操作步骤
  2. 结课作业:云计算在物联网中的应用发展
  3. TensorFlow-Bitcoin-Robot:Tensorflow 比特币交易机器人
  4. 思考一下消息中间件的设计
  5. SAP CRM SPRO Customizing 里 Text Object 属性 continue 的含义
  6. mysql如何让表建立连接吗_MySQL 表与表之间建立关系
  7. java spring jdbc_Spring与JDBC支持
  8. “零代码”时代已来!程序员真的要去送外卖了?
  9. php js 的rsa加密
  10. 小峰视频十四:面向对象和类的概念
  11. ztree 后台异步加载_ztree 异步加载示例
  12. HTML 编辑器推荐
  13. java setvalue函数,Java JavaTuples setValue()用法及代码示例
  14. 直观理解 梯度(gradient)
  15. Android 集成支付宝支付
  16. mysql cleaned up_关于mysqld自动停止的问题
  17. USB | 1. 技术演进及测试概览
  18. JavaScript---网络编程(12)--DHTML技术演示(5)-form表单验证技术(正则)
  19. PHP编写modbus,php – CRC-CCITT转CRC16 Modbus实现
  20. 一位Java工程师的阶段性工作总结

热门文章

  1. verilog中signed的使用
  2. windows下使用批处理设置环境变量
  3. Notes配置初始化和重新设置(不卸载)
  4. 数据分析与机器学习之线性回归与逻辑回归(六)
  5. oralce数据库创建同义词
  6. 南阳ACM 题目275:队花的烦恼一 Java版
  7. php.ini中设置session过期时间
  8. java转换ppt,ppt转成图片 乱码问题解决
  9. 已知背景和物体的均值方差,求最佳分割阈值
  10. 【Git/Github学习笔记】Git课程简介