GO连接数据库--踩坑(超详细)

2023-11-18

当使用go语言对数据进行连接时需要几部操作:

1.数据库侧:

需要允许远程连接,具体操作方法详见:本地主机连接阿里云数据库(自建数据库)排雷_秋为春的博客-CSDN博客

2.GO侧

1)需要引入go-sql-driver驱动

常见的引入方法有两种:

①通过命令行——前提是go的各个环境变量要配置好

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

②通过git进行复制

首先你的电脑要支持git这个命令,如果不支持需要下载安装Git下载地址给你放这了:

Git for Windows

下载安装后,直接把驱动Git到go path目录下:

git clone github.com/go-sql-driver/mysql

之后在go中使用用这个驱动:

import (
   "database/sql"
   "fmt"
   _ "mysql"     //引入
)

验证是否可以使用go对数据库进行操作:

首先创建一个数据库:

create database test;

以及一个表:

create table table(

id int(4),

name char(20)

)

通过GO代码对数据库进行简单操作:

语法详解:


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

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

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

代码操作: 

package main
import (
"database/sql"
"fmt"
_ "mysql"
)
func main() {
	db, err := sql.Open("mysql", "root:xxx@(xxxx:3306)/test")
	checkErr(err)
	// insert
	stmt, err := db.Prepare("INSERT ta SET id=?,name=?")
	checkErr(err)
	res, err := stmt.Exec(1, "wang")
	checkErr(err)
	// update
	stmt, err = db.Prepare("update ta set name=? where id=?")
	checkErr(err)
	res, err = stmt.Exec("wang", 1)
	checkErr(err)
	affect, err := res.RowsAffected()
	checkErr(err)
	fmt.Println(affect)
	// query
	rows, err := db.Query("SELECT * FROM ta")
	checkErr(err)
	for rows.Next() {
		var uid int
		var username string
		err = rows.Scan(&uid, &username)
		checkErr(err)
		fmt.Println(uid)
		fmt.Println(username)
	}
	// delete
	stmt, err = db.Prepare("delete from ta where id=?")
	checkErr(err)
	res, err = stmt.Exec(1)
	checkErr(err)
	// query
	rows, err = db.Query("SELECT * FROM ta")
	checkErr(err)
	for rows.Next() {
		var uid int
		var username string
		err = rows.Scan(&uid, &username)
		checkErr(err)
		fmt.Println(uid)
		fmt.Println(username)
	}
	db.Close()
}
func checkErr(err error) {
	if err != nil {
		panic(err)
	}
}

验证:

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GO连接数据库--踩坑(超详细) 的相关文章

  • 【计算机开题报告】基于JAVA的酒店管理系统的设计与实现

    1 毕业设计 论文 综述 随着社会经济和科技的迅速发展 人们对衣食住行的要求也逐渐提高 酒店 宾馆在服务行业中扮演着越来越重要的角色 本课程设计的内容旨在以管理系统的方式给人们出行提供酒店预订服务 从而能够更方便快捷的帮助酒店工作人员办理客
  • 电商数据接口API深度解析

    随着电子商务的快速发展 电商平台之间的竞争也日益激烈 为了在市场中保持领先地位 电商平台需要不断地优化用户体验 提供个性化的服务和精准的推荐 而这一切都离不开数据 电商数据接口API作为一种高效 便捷的数据交互方式 被广泛应用于电商领域 本
  • 如何处理不稳定的自动化测试?

    abluecolor 在解决这个问题之前 请停止编写更多测试 因为这将花费你较高的测试维护成本 你需要尽快行动起来对不稳定的原因进行深入研究 找到不稳定的根因 并且尝试在流程 环境和代码方面做一些优化工作解决它 MasterKindew 如
  • 神州信息一表通监管合规系统

    什么是 一表通 国家金融监督管理总局为进一步建立健全数据统计监管体系 规范数据报送指标体系 明确检测数据规则 而推行建立的一套新体系监管报送方式 提升校验准确性和信息安全性 近期 国家金融监督管理总局更是进一步加大推动 一表通 的实行试点范
  • Qt源码分析:Qt程序是怎么运行起来的?

    一 从 exec 谈起 一个标准的Qt gui程序 在启动时我们会coding如下几行简洁的代码 include widget h include
  • Navicat 16 for MySQL:打造高效数据库开发管理工具

    随着数据的快速增长和复杂性的提升 数据库成为了现代应用开发中不可或缺的一部分 而在MySQL数据库领域 Navicat 16 for MySQL作为一款强大的数据库开发管理工具 正受到越来越多开发者的青睐 Navicat 16 for My
  • 【计算机毕业设计】实验室预约管理

    身处网络时代 随着网络系统体系发展的不断成熟和完善 人们的生活也随之发生了很大的变化 人们在追求较高物质生活的同时 也在想着如何使自身的精神内涵得到提升 而读书就是人们获得精神享受非常重要的途径 为了满足人们随时随地只要有网络就可以看书的要
  • 【计算机毕业设计】北关村基本办公管理系统

    在如今社会上 关于信息上面的处理 没有任何一个企业或者个人会忽视 如何让信息急速传递 并且归档储存查询 采用之前的纸张记录模式已经不符合当前使用要求了 所以 对北关村基本办公信息管理的提升 也为了对北关村基本办公信息进行更好的维护 北关村基
  • 软件测试/测试开发/全日制/测试管理丨Redis内存数据库

    Redis是一种开源 内存中的数据结构存储系统 它提供了高性能 灵活性和丰富的数据结构 以下是Redis内存数据库的基本介绍 键值存储 Redis基于键值对的存储模型 其中每个键都与一个特定的值相关联 这种简单的数据模型使其易于使用和理解
  • APP端网络测试与弱网模拟

    当前APP网络环境比较复杂 网络制式有2G 3G 4G网络 还有越来越多的公共Wi Fi 不同的网络环境和网络制式的差异 都会对用户使用app造成一定影响 另外 当前app使用场景多变 如进地铁 上公交 进电梯等 使得弱网测试显得尤为重要
  • 【计算机毕业设计】北工国际健身俱乐部

    本系统为会员而设计制作北工国际健身俱乐部 旨在实现北工国际健身俱乐部智能化 现代化管理 本北工国际健身俱乐部管理自动化系统的开发和研制的最终目的是将北工国际健身俱乐部的运作模式从手工记录数据转变为网络信息查询管理 从而为现代管理人员的使用提
  • 【计算机毕业设计】二手家电管理平台

    时代在飞速进步 每个行业都在努力发展现在先进技术 通过这些先进的技术来提高自己的水平和优势 二手家电管理平台当然不能排除在外 二手家电管理平台是在实际应用和软件工程的开发原理之上 运用java语言以及前台VUE框架 后台SpringBoot
  • 【ES6】解构语句中的冒号(:)

    在解构赋值语法中 冒号 的作用是为提取的字段指定一个新的变量名 让我们以示例 const billCode code version route query 来说明 billCode code version 表示从 route query
  • 做测试不会 SQL?超详细的 SQL 查询语法教程来啦!

    前言 作为一名测试工程师 工作中在对测试结果进行数据比对的时候 或多或少要和数据库打交道的 要和数据库打交道 那么一些常用的sql查询语法必须要掌握 最近有部分做测试小伙伴表示sql查询不太会 问我有没有sql查询语法这一块的文档可以学习
  • 数据库 | 面试官:一次到底插入多少条数据合适啊?.....面试连环炮

    数据库 面试官 一次到底插入多少条数据合适啊 面试连环炮 数据库插入操作的基础知识 插入数据是数据库操作中的基础 但是 我们程序员将面临随之而来的问题 如何快速有效地插入数据 并保持数据库 性能 当你向数据库中插入数据时 这些数据直接存储到
  • 【go语言】AST抽象语法树详解&实践之扫描代码生成错误码文档

    背景 为了能识别出代码中抛出错误码的地址和具体的错误码值 再根据错误码文件获取到错误码的具体值和注释 方便后续的排错 这里使用AST进行语法分析获取到代码中的目标对象 一 编译过程 在开始解析代码之前先补充了解一下编译过程 编译过程是将高级
  • 毕业设计:基于python人脸识别系统 LBPH算法 sqlite数据库 (源码)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机毕业
  • 温室气体排放更敏感的模型(即更高的平衡气候敏感性(ECS))在数年到数十年时间尺度上也具有更高的温度变化(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • 每日变更的最佳实践

    在优维公司内部 我们采用发布单的方式进行每天的应用变更管理 这里给各位介绍优维的最佳实践 变更是需要多角色合作的 而且他是整体研发流程的一部分 在优维内部 我们坚持每日变更 打通开发环节到最终发布上线的全过程 在保证质量的前提下 尽可能提升
  • 光波导结构

    摘要 增强现实和混合现实 AR MR 领域的新应用引起了人们对带有光栅区域的光波导系统的越来越多的关注 这些光波导系统用于输入和输出耦合以及扩瞳目的 VirtualLab Fusion为这类系统的仿真和设计提供了几个强大的工具 其中一个是具

随机推荐

  • 蓝以中老师《高等代数》第01章:代数学的经典课题,笔记

    蓝以中老师 高等代数 第01章 代数学的经典课题 笔记 如下
  • vue 全局loading的思路和方法

    Vue 全局 loading 的实现思路一般是在 Vue 实例中添加一个 loading 组件 通过控制该组件的显示和隐藏来实现全局 loading 的效果 具体思路如下 创建一个全局的 Vue 组件 Loading 该组件用于显示 loa
  • 使用Aspect切面实现系统日志并存入数据库

    使用Aspect切面实现系统日志并存入数据库 1 pom xml中 加入Maven依赖
  • 标准C++库用法

    本文中提到的函数库有
  • JOIN与INNER JOIN区别

    一 指代不同 1 JOIN 用于根据两个或多个表中的列之间的关系 从这些表中查询数据 2 INNER JOIN 组合两个表中的记录 只要在公共字段之中有相符的值 二 特点不同 1 JOIN 每个主键的值都是唯一的 这样做的目的是在不重复每个
  • JS求任意字符串中出现最多的字符以及出现的次数

    随意定义一个字符串 var str 111iiiw2shhfel000 定义函数 function num str 定义一个空对象 因为这边要求出现最多次数 以及出现的字符 这边使用对象的方式再合适不过了 键值对的形式 var obj 求出
  • 在idea使用本地jetty

    参考 https www jetbrains com idea help run debug configuration jetty server html背景 web开发当中 我觉得服务层的代码尽量用单元测试来测 这样可减少启动web容器
  • HTTP代理编程:Python实用技巧与代码实例

    今天我要与大家分享一些关于HTTP代理编程的实用技巧和Python代码实例 作为一名HTTP代理产品供应商 希望通过这篇文章 帮助你们掌握一些高效且实用的编程技巧 提高开发和使用HTTP代理产品的能力 一 使用Python的requests
  • 小数转化为二进制

    小数转换为二进制方法 a 0 125 10 0 125 10 转化为二进制方法 取每次结果的小数乘以2得到b 取b的整数位 如果b为1 0结束计算得到结果 0 125 2 0 25 gt 取整数部分 0 0 25 2 0 5 gt 0 0
  • 【C#】.Net Framework框架下使用SQLike以及基本概念

    2023年 第32周 第2篇文章 给自己一个目标 然后坚持总会有收货 不信你试试 在C 的 NET Framework框架下 有很多轻量级数据库选择 比如 SQLike就是其中一款 一起来了解SQLike的简单使用吧 目录 一 轻量级数据库
  • 关于VUE 配置文件config详解内容

    const path require path module exports 区分打包环境与开发环境 process env NODE ENV production 打包环境 process env NODE ENV development
  • 【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

    参考论文 Knowledge Distillation A Survey 1 前言 近年来 深度学习在学术界和工业界取得了巨大的成功 根本原因在于其可拓展性和编码大规模数据的能力 但是 深度学习的主要挑战在于 受限制于资源容量 深度神经模型
  • C++ 使用海康威视SDK将视频推流到rtmp服务器

    研究FFmpeg有两三年了 一直没写过这方面的文章 今天记一下 由于工作关系 需要将化工企业内部的视频发布到一个部署在公网的视频服务器 然后由相关人员浏览 由于是化工企业 企业严禁外部的机器直接访问视频网络 最多提供一个跳板机 因此 两年多
  • 干洗店小程序,洗鞋店小程序,互联网洗鞋店,企业干洗方案,干洗行业小程序,上门取衣小程序,预约干洗小程序,校园干洗店小程序,工厂干洗店小程序,干洗店小程序开发;

    干洗店小程序 洗鞋店小程序 互联网洗鞋店 企业干洗方案 干洗行业小程序 上门取衣小程序 预约干洗小程序 校园干洗店小程序 工厂干洗店小程序 干洗店小程序开发 微信干洗店小程序 一 核心功能介绍 1 支持上门取送 送货到店 寄存网点 智能衣柜
  • oracle9i升级oracle10g

    author skate time 2009 09 11 网上看到一篇oracle9i升级oracle10g的文章 觉得不错 记录下来 你可以参考汪海的文章 http wzwanghai spaces live com 37AFBD116
  • day3作业

    在家目录下创建目录名为 shuren ubuntu ubuntu mkdir shuren 在shuren目录下创建d1 d2 d3 注意d2在d1目录下 d3在d2目录下 ubuntu ubuntu mkdir shuren d1 d2
  • java 数组作为方法参数

    数组作为方法参数 例 定义方法 打印输出数组元素的值 public void printArray int arr 数组明指向数组的第一个的元素 数组作为方法参数的方法调用 数组作为方法参数 当传参的时候 传递的是数组的名字 而在方法中定义
  • React 组件通讯

    目录 1 组件通讯 概念 1 组件的特点 2 知道组件通讯意义 总结 2 组件通讯 props 基本使用 1 传递数据和接收数据的过程 2 函数组件使用 props 3 类组件使用 props 总结 3 组件通讯 props 注意事项 1
  • Mybatis的缓存(实例)

    目录 概念 实例 Mybatis中的一级缓存 清空一级缓存的时机 Mybatis中的二级缓存 总结 gt 项目源码 概念 缓存 存于内存中的临时数据 使用缓存优点 减少和数据库的交互次数 提高执行效率 缓存适用于 经常查询并且不经常改变的
  • GO连接数据库--踩坑(超详细)

    当使用go语言对数据进行连接时需要几部操作 1 数据库侧 需要允许远程连接 具体操作方法详见 本地主机连接阿里云数据库 自建数据库 排雷 秋为春的博客 CSDN博客 2 GO侧 1 需要引入go sql driver驱动 常见的引入方法有两