使用Go 语言连接并操作 MySQL 数据库

news2024/11/27 13:42:41

新建项目,我这里使用的vscode:

1.新建项目初始化:

手动创建工程文件夹go安装目录->src->projectName
在这里插入图片描述
在项目下创建 main.go文件:
在vscode中点击文件->打开文件夹,选择刚刚新建的文件夹。打开后,如下图新建一个文件后缀为.go(main.go)。
在这里插入图片描述

在这里插入图片描述
打开终端,如下图,输入go mod init go_test(格式:go mod init 新建的文件名称),回车等待。点击运行按钮或ctrl+alt+n运行项目。
在这里插入图片描述

2.安装MySQL驱动

要使用Go语言连接MySQL,首先需要安装一个兼容的数据库驱动。go-sql-driver/mysql 是一个广泛使用的开源驱动,可以通过 go get 命令来安装:

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

在这里插入图片描述

3.导入驱动包

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

4. 连接数据库

package main

import (
	"database/sql"
	"fmt"

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

func main() {
	// DSN (Data Source Name) 是包含数据库连接信息的字符串
	dsn := "user:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"

	// 创建数据库连接
	db, err := sql.Open("mysql", dsn)
	if err != nil {
		panic(err.Error())
	}
	defer db.Close()

	// 检查连接是否有效
	err = db.Ping()
	if err != nil {
		panic(err.Error())
	} else {
		fmt.Println("Connected to the database!")
	}
}

参数说明:

user: 数据库用户名
password: 密码
tcp(localhost:3306): 服务器地址和端口(这里是本地主机上的默认MySQL端口)
/dbname: 要连接的数据库名称
charset=utf8mb4: 设置字符集
parseTime=True: 让驱动解析时间类型字段为time.Time类型
loc=Local: 设置时区为本地时区

测试一下:
在这里插入图片描述
写一个查询试试:

package main

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

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

func main() {
	// DSN (Data Source Name) 是包含数据库连接信息的字符串
	dsn := "root:123456@tcp(1.1.1.1:3306)/ry-vue?charset=utf8mb4&parseTime=True&loc=Local"

	// 创建数据库连接
	db, err := sql.Open("mysql", dsn)
	if err != nil {
		panic(err.Error())
	}
	defer db.Close()

	// 检查连接是否有效
	err = db.Ping()
	if err != nil {
		panic(err.Error())
	} else {
		fmt.Println("Connected to the database!")
	}

	// 查询单个用户
	userId := 2
	getUser(db, userId)
}

// 查询单个用户
func getUser(db *sql.DB, user_id int) {
	query := "SELECT user_id ,user_name,nick_name FROM sys_user WHERE user_id = ?"
	row := db.QueryRow(query, user_id)

	var user_name string
	var nick_name string
	// 调用完了 QueryRow 方法之后,一定要记得调用 Scan 方法,否则持有的数据库连接不会被释放
	if err := row.Scan(&user_id, &user_name, &nick_name); err != nil {
		if err == sql.ErrNoRows {
			fmt.Printf("用户 ID %d 不存在\n", user_id)
		} else {
			log.Fatal(err)
		}
	} else {
		fmt.Printf("用户 ID: %d, userName: %s, nickName: %s\n", user_id, user_name, nick_name)
	}

}

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Jmeter中的断言

7)断言 1--响应断言 功能特点 数据验证:验证响应数据是否包含或不包含特定的字符串、模式或值。多种匹配类型:支持多种匹配类型,如文本、正则表达式、文档等。灵活配置:可以设置多个断言条件,满足复杂的测…

springboot实战(19)(条件分页查询、PageHelper、MYBATIS动态SQL、mapper映射配置文件、自定义类封装分页查询数据集)

引言: 该类博客的学习是基于b站黑马视频springbootvue视频学习!具体围绕项目——"大事件"进行实战学习。 目录 一、功能介绍(需求)。 1、文章列表功能基本介绍。 2、条件分页查询功能与注意。 3、前端页面效果。&#x…

goframe框架bug-记录

implement not found for interface ICompany, forgot register? 错误解决检查: 1.有没有init 2. 注入问题 3. 注入问题

零基础学安全--云技术基础

目录 学习连接 前言 云技术历史 云服务 公有云服务商 云分类 基础设施即服务(IaaS) 平台即服务(PaaS) 软件即服务(SaaS) 云架构 虚拟化 容器 云架构设计 组件选择 基础设施即代码 集成部署…

数据结构 (11)串的基本概念

一、串的定义 1.串是由一个或者多个字符组成的有限序列,一般记为:sa1a2…an(n≥0)。其中,s是串的名称,用单括号括起来的字符序列是串的值;ai(1≤i≤n)可以是字母、数字或…

【Java】二叉树:数据海洋中灯塔式结构探秘(上)

个人主页 🌹:喜欢做梦 二叉树中有一个树,我们可以猜到他和树有关,那我们先了解一下什么是树,在来了解一下二叉树 一🍝、树型结构 1🍨.什么是树型结构? 树是一种非线性的数据结构&…

在 macOS 上安装 MongoDB Community Edition

https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-os-x/

docker部署单机版doris

文章目录 前言一、系统环境简介二、部署要求三、部署安装1、基础设置2、下载镜像3、下载安装包4、启动镜像环境5、配置fe6、配置be 总结 前言 应项目测试需求,需使用docker部署单机版doris。 一、系统环境简介 #1 系统信息 [roottest][~] $cat /etc/redhat-relea…

c++编程玩转物联网:使用芯片控制8个LED实现流水灯技术分享

在嵌入式系统中,有限的GPIO引脚往往限制了硬件扩展能力。74HC595N芯片是一种常用的移位寄存器,通过串行输入和并行输出扩展GPIO数量。本项目利用树莓派Pico开发板与74HC595N芯片,驱动8个LED实现流水灯效果。本文详细解析项目硬件连接、代码实…

uni-app运行 安卓模拟器 MuMu模拟器

最近公司开发移动端系统,使用真机时每次调试的时候换来换去的麻烦,所以使用模拟器来调试方便。记录一下安装和连接的过程 一、安装MuMu模拟器 百度搜索MuMu模拟器并打开官网或者点这里MuMu模拟器官网 点击下载模拟器 安装模拟器,如果系统…

C语言解析命令行参数

原文地址:C语言解析命令行参数 – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 C语言有一个 getopt 函数,可以对命令行进行解析,下面给出一个示例,用的时候可以直接copy过去修改,很方便…

传奇996_36——背包图标,物品位置问题

绑定位置不对位 CTRLF9背包物品文件,也就是bag_item文件夹的bag_item.lua文件,这个小框和大框的相对位置会影响那个绑定图标,就是背包物品组合的标签和下面子标签的相对位置 背包物品偏移到看不见 原因:CTRLF9背包物品文件,也就…

使用Python和Pybind11调用C++程序(CMake编译)

目录 一、前言二、安装 pybind11三、编写C示例代码四、结合Pybind11和CMake编译C工程五、Python调用动态库六、参考 一、前言 跨语言调用能对不同计算机语言进行互补,本博客主要介绍如何实现Python调用C语言编写的函数。 实验环境: Linux gnuPython3.10…

如何选择黑白相机和彩色相机

我们在选择成像解决方案时黑白相机很容易被忽略,因为许多新相机提供鲜艳的颜色,鲜明的对比度和改进的弱光性能。然而,有许多应用,选择黑白相机将是更好的选择,因为他们产生更清晰的图像,更好的分辨率&#…

代码美学:MATLAB制作渐变色

输入颜色个数n,颜色类型: n 2; % 输入颜色个数 colors {[1, 0, 0], [0, 0, 1]}; createGradientHeatmap(n, colors); 调用函数: function createGradientHeatmap(n, colors)% 输入检查if length(colors) ~ nerror(输入的颜色数量与n不一…

SAP 零售方案 CAR 系统的介绍与研究

前言 当今时代,零售业务是充满活力和活力的业务领域之一。每天,由于销售运营和客户行为,它都会生成大量数据。因此,公司迫切需要管理数据并从中检索见解。它将帮助公司朝着正确的方向发展他们的业务。 这就是为什么公司用来处理…

【leetcode】动态规划

31. 873. 最长的斐波那契子序列的长度 题目&#xff1a; 如果序列 X_1, X_2, ..., X_n 满足下列条件&#xff0c;就说它是 斐波那契式 的&#xff1a; n > 3对于所有 i 2 < n&#xff0c;都有 X_i X_{i1} X_{i2} 给定一个严格递增的正整数数组形成序列 arr &#xff0…

自动泊车“哐哐撞大墙”,小米SU7智驾功能bug缠身?

文/王俣祺 导语&#xff1a;小米SU7&#xff0c;自带热度与科技光环的“流量神车”&#xff0c;近日却以一种极为“狼狈”的方式闯入大众视野。多达70余辆小米SU7陷入“泊车魔咒”&#xff0c;瞬间在网络上炸开了锅。从“科技控”到“惹祸精”的背后&#xff0c;究竟藏着怎样的…

优维HAO案例:全球TOP15汽车零件供应商「IT运维自动化」创新工程

撰文&#xff1a;鹿小U / 制图&#xff1a;脾气超好 又是一家很厉害的客户。 YADT是全(hu)球(zhēn)领(ji)先(sh)的汽车座椅供应商&#xff0c;拥有从汽车座椅零部件到整椅的完整生产制造能力&#xff0c;为中国几乎所有的汽车制造商提供汽车整椅产品和服务。 YADT在国内拥…

Linux宝塔部署wordpress网站更换服务器IP后无法访问管理后台和打开网站页面显示错乱

一、背景&#xff1a; wordpress网站搬家&#xff0c;更换服务器IP后&#xff0c;如果没有域名时&#xff0c;使用服务器IP地址无法访问管理后台和打开网站页面显示错乱。 二、解决方法如下&#xff1a; 1.wordpress搬家后&#xff0c;在新服务器上&#xff0c;新建站点时&am…