go语言操作数据库

2023-09-20 16:24:33

1.10 GO连接MySQL

  1. 因为Go语言没有提供任何官方数据库驱动,所以需要安装第三方函数库。
  2. 由于在github上安装,所以需要安装git软件,安装过程一直点击下一步即可。安装完成后需要配置环境变量
1.10.1 安装git

git软件

在这里插入图片描述

安装完毕后,配置git的环境变量,这样可以使用get的指令

在这里插入图片描述

1.10.2 安装数据库驱动

设置GOPATH的环境变量,这样驱动才会下载到项目根目录中。

在这里插入图片描述


在cmd命令窗口中输入如下命令安装驱动

go get github.com/go-sql-driver/mysql

这一命令会从代码中获取驱动的具体代码,并将这些代码放置到包库中,当需要用到驱动的时候,编译器会把驱动代码与用户编写的代码一同编译。

安装完毕后,会在GOPATH下看到下载的驱动

在这里插入图片描述

报错解决

https://blog.csdn.net/admin_jalen/article/details/123025833?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169519102416800225569075%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169519102416800225569075&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-123025833-null-null.142^v94^control&utm_term=%20OpenSSL%20SSL_connect%3A%20SSL_ERROR_SYSCALL%20in%20connection%20to%20github.com%3A443&spm=1018.2226.3001.4187
1.10.3 连接数据库

1、在src目录下创建demo.go文件,导入数据库驱动

import (
	"database/sql"
	_ "github.com/go-sql-driver/mysql"
)

注意:程序在操作数据库的时候只需要用到database/sql,而不需要直接使用数据库驱动,所以程序在导入数据库驱动的时候将这个包的名字设置成下划线。

2、通过sql.open()连接数据库

sql.open(驱动名,数据源dsn)(*DB,err)

数据源语法:"用户名:密码@[连接方式](主机名:端口号)/数据库名"

注意:open()在执行时不会真正的与数据库进行连接,只是设置连接数据库需要的参数
ping()方法才是连接数据库

3、执行SQL语句

​ 创建测试表

mysql> create table stu(
    -> id int primary key,
    -> name varchar(10)
    -> );
Query OK, 0 rows affected (0.02 sec)

操作数据

package main

import (
	"database/sql"
	_ "github.com/go-sql-driver/mysql"
	"fmt"
)

func main(){
	//"用户名:密码@[连接方式](主机名:端口号)/数据库名"
	db,_:=sql.Open("mysql","root:root@(127.0.0.1:3306)/itcast") // 设置连接数据库的参数
	defer db.Close()	//关闭数据库
	err:=db.Ping()		//连接数据库
	if err!=nil{
		fmt.Println("数据库连接失败")
		return
	}

	//操作一:执行数据操作语句
	/*
	sql:="insert into stu values (2,'berry')"
	result,_:=db.Exec(sql)		//执行SQL语句
	n,_:=result.RowsAffected();	//获取受影响的记录数
	fmt.Println("受影响的记录数是",n)
	*/

	//操作二:执行预处理
	/*
	stu:=[2][2] string{{"3","ketty"},{"4","rose"}}
	stmt,_:=db.Prepare("insert into stu values (?,?)")		//获取预处理语句对象
	for _,s:=range stu{
		stmt.Exec(s[0],s[1])			//调用预处理语句
	}
	*/

	//操作三:单行查询
	/*
	var id,name string
	rows:=db.QueryRow("select * from stu where id=4")   //获取一行数据
	rows.Scan(&id,&name)		//将rows中的数据存到id,name中
	fmt.Println(id,"--",name)
	*/

	//操作四:多行查询
	rows,_:=db.Query("select * from stu")		//获取所有数据
	var id,name string
	for rows.Next(){		//循环显示所有的数据
		rows.Scan(&id,&name)
		fmt.Println(id,"--",name)
	}
}
更多推荐

OpenCV(三十八):二维码检测

1.二维码识别原理功能图形:位置探测图形:通常,二维码中有三个位置探测图形,呈现L型或大角度十字架形状,分布在二维码的三个角上,用于帮助扫描设备定位二维码的位置和方向。位置探测图形分隔符:帮助扫描设备区分位置探测图形和二维码的数据区域。计算模式:通常是一个小的正方形图案,用于校准扫描设备以捕捉和解码二维码的图像。对齐标

jQuery 框架学习笔记(基础)

WhatjQuery是一种快速、简洁跨游览器的JavaScript函数库,其宗旨是“Writeless,Domore”,它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。注意:jQuery不是将所有的JS封装,只是有选择性的封装

观察者模式 & 发布-订阅模式(设计模式与开发实践 P8)

文章目录观察者模式运用实现观察者模式定义:他用来定义对象之间一种一对多的依赖关系,当一个对象状态发生改变时,所有依赖他的对象都会得到通知运用如果我们使用过DOM上的事件函数,那就接触过观察者模式document.body.addEventListener("click",function(){console.log("

HTML 知识扫盲

写在前面HTML是一门超文本标记语言,不管你听没听说过HTML,但在网上冲浪的途中你无时不刻都在与它接触,他遍布在每个你看得到的互联网的角落。其实对于笔者而言,我已经断断续续地学习过这门语言,经过时间的磋磨,所剩知识也是寥寥无几,这次借此机会复盘并总结一下HTML,当然在这里我不会将HTML语言的细节全盘拖出,只是总结

Android Fragment动画实现

在Android中,你可以使用FragmentTransaction来实现Fragment的动画效果。这允许你在添加、替换或移除Fragment时应用动画,从而改善用户体验。下面是如何实现Fragment动画的基本步骤:1.创建两个Fragment:首先,创建两个Fragment,例如FragmentA和Fragmen

TS同时打包和监视所有ts文件或只指定ts文件

当我们项目中ts文件较多时,我们如何直接打包所有ts文件为js文件?而不是使用tsc文件名一个一个去打包文件一、配置tsconfig.json文件创建一个tsconfig.json文件,该文件中不需要配置任何信息二、控制台输入打包命令在控制台输入如下代码:tsc三、对所有ts文件进行监听但是我们并没有对文件进行监听,修

Linux各种命令-查询篇

目录查看文件内容查看存储空间查看python安装目录查Ubuntu版本查看所有文件(含隐藏文件)查IP查看内存使用情况查看GPU使用情况查看CPU使用情况​​​​​​​查看文件内容cat[选项][文件...]-n:显示行号。-b:显示非空行号。-s:合并空白行。-E:在每行结尾添加$符号。-T:将制表符显示为^I。-v

交换机端口镜像详解

交换机端口镜像是一种网络监控技术,它允许将一个或多个交换机端口的网络流量复制并重定向到另一个端口上,以便进行流量监测、分析和记录。通过端口镜像,管理员可以实时查看特定端口上的流量,以进行网络故障排查、安全审计和性能优化。以下是关于交换机端口镜像的详细介绍:工作原理:交换机端口镜像通过在交换机的配置中指定源端口和目标端口

pycharm 中package, directory, sources root, resources root的区别

【遇到的问题】导入yolov5中有utils文件,自己的代码中也有utils文件,使得yolov5中的这部分引用出错了。【解决方案】单独建立detection文件夹,把检测相关的都放在这里,yolov5是github上拉取的源码,发现yolov5中fromutilsimport...有下划线,且会认为是edgeserv

多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出

多输入多输出|MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出目录多输入多输出|MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出预测效果基本介绍程序设计往期精彩参考资料预测效果基本介绍MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出1.dat

【码银送书第七期】七本考研书籍

八九月的朋友圈刮起了一股晒通知书潮,频频有大佬晒出“研究生入学通知书”,看着让人既羡慕又焦虑。果然应了那句老话——比你优秀的人,还比你努力。心里痒痒,想考研的技术人儿~别再犹豫了。小编咨询了一大波上岸的大佬,这份备考书单给大家参考。专业课(此处特指408,全称计算机专业基础综合)知识点超级多,题目灵活,数据结构、计算机

热文推荐