首页 > 数据库 >Go 编程-mysql数据库操作

Go 编程-mysql数据库操作

时间:2024-08-24 21:47:44浏览次数:7  
标签:err mysql fmt 编程 DB Println sql Go

一、环境准备

在Go语言中连接MySQL数据库通常使用database/sql包配合一个MySQL驱动,比如github.com/go-sql-driver/mysql
安装github.com/go-sql-driver/mysql
go get github.com/go-sql-driver/mysql

二、连接及增删改查

package main

import (
	"database/sql"
	"fmt"
	"log"

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

//连接数据库使用sql.open(),然后使用ping来测试数据库是否可用
func Connect_mysql () *sql.DB{
	// 数据库连接字符串 (DSN) 格式为: user:password@tcp(host:port)/dbname?charset=utf8mb4
	dsn := "root:root@tcp(127.0.0.1:3306)/go_study?charset=utf8mb4"
	db, err := sql.Open("mysql",dsn)
	if err!=nil {
		log.Println("mysql connect erro: ",err)
		return nil
	}
	if db.Ping()!=nil {
		log.Println("ping err :")
		return nil
	}
	fmt.Println("mysql connect success!")
	return db

}

//查询操作,使用Query,因为查询的数据会返回很多行,所以Query会返回一个sql.Rows的数据集
//为什么不使用Exec?因为exec返回的是一个result,通常是包含改变的位置信息。
func Select_(db *sql.DB) {
	select_sql := "select username,sex from user"
	rows ,er := db.Query(select_sql)
	if er!=nil {
		fmt.Println("查询失败:",er)
	}
	//查询结果的处理主要使用两个函数,rows.Next()遍历每条数据,rows.Scan()将每一条数据的信息输入进参数里面。
	for rows.Next(){
		// var id int
		// var emil string
		var username string
		var sex string
		erro :=rows.Scan(&username,&sex) //一条数据有几个字段就要Scan几个参数进行接收
		if erro !=nil{
			fmt.Println("Rows scan err:",erro)
			break
		}
		fmt.Printf("username:%s sex : %s\n",username,sex)

	}
}
func main() {
	DB :=Connect_mysql()
	defer DB.Close()
	// 查询操作
	

	//插入
	insert_sql := "insert into user (username,sex,email) values(?,?,?)"
	_ , err := DB.Exec(insert_sql,"xrf","girl","110")
	if err !=nil {
		fmt.Println("插入数据失败:",err)
	}

	//查询
		Select_(DB)


	update := "update user set sex=? where username = ?"
	DB.Exec(update,"boy","xrf")
	fmt.Println("更改之后:")
	Select_(DB)

	del:= "delete from user where user_id = ?"
	DB.Exec(del,2)
	fmt.Println("删除:")
	Select_(DB)



}

标签:err,mysql,fmt,编程,DB,Println,sql,Go
From: https://www.cnblogs.com/iruan/p/18378324

相关文章

  • docker部署mysql
    #创建主从数据库文件夹mkdir-p/usr/local/mysql/master1/confmkdir-p/usr/local/mysql/master1/datamkdir-p/usr/local/mysql/slave1/confmkdir-p/usr/local/mysql/slave1/data#初始化主数据库配置文件cd/usr/local/mysql/master1/confvimy.cnf#粘贴以下内容......
  • 网络编程process5
    1、网络编程1.1、概述计算机网络:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备;通过通信线路和通信设备连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。网络编程的目的:‌网络编程的主要目的是直......
  • C# .NET CORE 面试题【Mysql篇】
    心之所向,勇往直前!简单归纳Mysql相关面试题正文1. MySql的索引有哪些? a.聚簇索引:主键,索引即数据b.非聚簇索引:索引和数据分开储存,检索到索引后需要回表查询数据  2. MySql的Myisam和Innodb有什么区别? a.Myisam不支持事务......
  • GO中的RPC
    RPC是什么RPC是远程过程调用的简称,是分布式系统中不同节点间流行的通信方式。它允许客户端程序调用位于远程计算机上的服务器程序上的方法或函数,就像调用本地程序一样。简单使用服务端RPC方法只能有两个可序列化的参数,其中第二个参数是指针类型,并且返回一个error类型,同时......
  • Python编程 - 函数基础
    前言上篇文章咱们主要讲了Python的容器,容器主要有列表,元组,集合和字典,接下来讲讲函数,函数也是Python中也是很重要的。一、函数的定义函数就是具有一定功能的代码块,以下就是最简单的函数;defprint_info():print("测试")定义函数后还需要通过"函数名()"调用该函数,函数才......
  • 使用Java导出MySQL数据:支持自定义分隔符的TXT文件生成
    在软件开发中,我们经常需要将数据库中的数据导出为文件,给关联系统做传输或者进行数据备份、迁移或分析。常见的导出格式包括CSV和TXT文件,分隔符可以是逗号、制表符或其他符号。本文将深入探讨如何使用Java从MySQL数据库中导出数据,并支持用户自定义分隔符来生成格式化的TXT文件。......
  • golang RSA 解密前端jsencrypt发送的数据时异常 crypto/rsa: decryption error 解决方
    golang中RSA解密前端(jsencrypt)发来的密文后出现 "crypto/rsa:decryptionerror" ,这个问题首先需要确认你的私匙和公匙是否匹配,如果匹配那检查入参数据类型,前端发送来的rsa加密后的数据一般都是经过base64编码后的,在后端进行RSA解码时需要对前端发送的数据进行base64......
  • mysql夺命100问
    一、事务1、事务的四大特性ACID是什么?原子性一个事务中的操作要么全部成功,要么全部失败。通过undolog来实现隔离性一个事务的修改在最终提交前,对其他事务是不可见的。通过读写锁+MVCC来实现持久性一旦事务提交,所做的修改就会永久保存到数据库中。通过redolog来实现......
  • MySQL从入门到精通(第5-8章)
    文章目录5排序与分页5.1排序数据5.1.1排序规则5.1.2单列排序5.1.3多列排序5.2分页5.2.1实现规则5.2.2拓展6多表查询6.1笛卡尔积6.1.1笛卡尔积(或交叉连接)的理解6.1.2笛卡尔积可能存在的问题与解决6.2多表查询分类讲解6.2.1等值连接与非等值连接6.2.1.1......
  • 学编程的普通人如何通过技术变现,副业月入过万?python兼职,学习
    前言我有一个朋友,在国企工作,月薪一万出头。前几个月他和我说,他辞职了。说实话在这种行情下,敢裸辞的都是勇士,我问他为啥要辞职,他说现在他的副业已经超过主业收入了,上班反而耽误他挣钱,他光靠做副业,最高一个月收入6w+,这比上班香多了,时间还自由。说这个并不是主张让大家辞职,而......