Go 编程-mysql数据库操作
一、环境准备
在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)
}
Go 编程-mysql数据库操作的更多相关文章
- Java通过JDBC 进行MySQL数据库操作
转自: http://blog.csdn.net/tobetheender/article/details/52772157 Java通过JDBC 进行MySQL数据库操作 原创 2016年10月10 ...
- Python数据存储 — MySQL数据库操作
本地安装MySQL 调试环境python3.6,调试python操作mysql数据库,首先要在本地或服务器安装mysql数据库. 安装参考:https://mp.csdn.net/postedit/8 ...
- php : mysql数据库操作类演示
设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...
- php MySQL数据库操作类源代码
php MySQL数据库操作类源代码: <?php class MySQL{ private $host; //服务器地址 private $name; //登录账号 private $pwd; ...
- 设计模式 - 单例模式mysql数据库操作类
待续... index.php 调用方法: <?php header('Content-Type:text/html; charset=utf8'); require 'instance.php ...
- MySQL数据库操作常用命令
MySQL数据库操作常用命令DOS连接数据库1.安装MySQL配置好环境2.运行cmd命令net start mysql3.找到mysql文件根目录输入命令mysql -h localhost -u ...
- Python/MySQL(四、MySQL数据库操作)
Python/MySQL(四.MySQL数据库操作) 一.数据库条件语句: case when id>9 then ture else false 二.三元运算: if(isnull(xx)0, ...
- Mysql 数据库操作之DDL、DML、DQL语句操作
Mysql 数据库操作之DDL.DML.DQL语句操作 设置数据库用户名密码 l Show databases 查看数据库列表信息 l 查看数据库中的数据表信息 ,格式: use 数据库名: sh ...
- Python进行MySQL数据库操作
最近开始玩Python,慢慢开始喜欢上它了,以前都是用shell来实现一些自动化或者监控的操作,现在用Python来实现,感觉更棒,Python是一门很强大的面向对象语言,所以作为一个运维DBA或者运 ...
- Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- co ...
随机推荐
- Golang 切片作为函数参数传递的陷阱与解答
作者:林冠宏 / 指尖下的幽灵.转载者,请: 务必标明出处. GitHub : https://github.com/af913337456/ 出版的书籍: <1.0-区块链DApp开发实战&g ...
- Java Redis多限流
Java Redis多限流 在Java中实现Redis多限流通常涉及使用Redis的某些特性,如INCR.EXPIRE.Lua脚本或者更高级的Redis数据结构如Redis Bitmaps.Redis ...
- [oeasy]python0037_电传打字机_打印头_print_head_carriage_词源
换行回车 回忆上次内容 上次我们 diy了 自己的小动物 还可以 让小动物 变色.报时 还可以 说些话 这很亚文化 很酷炫的亚文化 不是吗? 回忆一下 最开始 研究报时 的 时候 回到 本行行头 的 ...
- Java JVM——13. 垃圾回收相关算法
1.生存还是死亡? 在堆里存放着几乎所有的 Java 对象实例,在 GC 执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象.只有被标记为己经死亡的对象,GC 才会在执行垃圾回 ...
- 测试思想-流程规范 用例优先级定义与使用规范 V1.0
用例优先级定义与使用规范 V1.0 By:授客 1. 规范说明 目的 对软件测试过程中的用例级别进行详细描述及标准化定义,明确不同测试阶段的测试范围,减少测试冗余投入,提高测试效率,建立 ...
- 服务端渲染中的数据获取:结合 useRequestHeaders 与 useFetch
title: 服务端渲染中的数据获取:结合 useRequestHeaders 与 useFetch date: 2024/7/24 updated: 2024/7/24 author: cmdrag ...
- 【RabbitMQ】05 通配符模式
需要设定交换机模式为通配符模式 Topic 在绑定规则上采用通配描述实现动态绑定 创建通配符模式的生产者 package cn.dzz.topicQueue; import com.rabbitmq. ...
- 【C3】06 选择器概述
CSS中,选择器用来指定网页上我们想要样式化的HTML元素. CSS选择器有很多种可供使用,所以在选择要样式化的元素时,我们可以做到很精细的地步. 本文和本文的子篇中,我们将会很详细地讲授选择器不同的 ...
- 代码随想录Day4
24.两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 1: 输入:head = [1, ...
- NVIDIA一直宣传的DPU是个啥东西,啥用处? —— NVIDIA BlueField-3 DPU
地址: https://www.bilibili.com/video/BV1ys4y1z7nS/ 无意间看到了些比较靠谱的解释: (来自地址:https://www.bilibili.com/vide ...