go连接MySQL增删改查

首先我们登录mysql,先创建一个表user。如下所示:

创建user表

然后我们向其增加一行数据:

增加一行数据

下面的增删改查操作,就围绕着这个表来展开。main函数如下所示:

main函数


一、增

增加数据

首先我们定义一个sqlStr,其中的string语句是sql语句,只不过值我们用占位符"?"来表示,接下来我们用Exec()方法来进行对数据库表中条例的增加操作,该函数的第一个参数是string类型的含占位符的sql语句,后两个参数就是用来填充语句中的占位符的。返回一个ret和err。

调用ret.LastInsertId()来查找上一次插入数据的id,最后的输出结果如下:

输出

mysql中查看结果:

sql增加结果

这样就说明,我们成功向数据库中添加了条例。

注:不同的数据库中,sql语句使用的占位符语法也不同:

不同数据库使用的占位符语法


二、删


删除数据函数

已知mysql的user表中现在有以下字段:

sql删除前

执行删除函数之后,输出如下:

输出

再查看mysql的user表单如下:

id=3被删除

执行完毕后,可以发现id=3的字段已经被删除。


三、改


更新数据函数

执行函数之后,输出结果:

输出
sql表单

可以发现sql表单中id=1的age字段已经被改成了39。


四、查

1、查询单行数据

查询单条数据函数

sqlStr是一个含有通配符"?"的string类型sql语句。QueryRow()返回的是查询到的行(row)变量,参数一就是我们定义的sql语句,参数二是填入占位符"?"中的值。

这里要注意,执行QueryRow()之后,一定要执行Scan()方法,因为

Scan方法

Scan方法中,有个延迟关闭函数。如果不关闭就意味着持有的数据库不会被释放,就会引发后续的很多问题。Scan函数的三个参数,对应我们定义的user结构体的三个变量:

user结构体

这里我们查询的是id为1的变量,输出结果如下:

输出

这与我们的sql表单中一致,即成功完成查询单条数据

sql表单

2、查询多行数据

查询函数如下:

查询多行数据函数

多行查询db.Query()执行一次查询,返回多行结果(即Rows),一般用于执行select命令。

值得注意的是,我们中间自己写了defer db.Close()来延迟关闭。但是我们之前说过Scan方法中就有Close()方法来关闭,为什么还要多此一举呢?

这是因为for循环未必成功执行完。

输出如下:

输出

对比sql表单:

sql表单一直当前表单

说明多行查询成功。

你可能感兴趣的:(go连接MySQL增删改查)