首页 > 数据库 >golang操作数据库-mysql&mongodb

golang操作数据库-mysql&mongodb

时间:2022-12-15 19:03:34浏览次数:42  
标签:nil err mongodb fmt db golang func mysql id

安装驱动

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

初始化模块

go mod init m

执行go mod tidy

go mod tidy

导入驱动

package main
import
"fmt
"database/sq1'
"github.com/go-sql-driver/mysql
func main(){

}

链接数据库

func initDB() (err error) {
// 定义一个初始化数据库的函数func initDB() (err error) {
dsn := "root:root@tcp(127.0.0.1:3306)/school?charset=utf8mb4&parseTime=True" // 不会校验账号密码是否正确// 注意!!!这里不要使用:=,我们是给全局变量赋值,然后在main函数中使用全局变量db
db, err = sql.Open("mysql", dsn)
if err != nil {
return err
}
err = db.Ping()
// 尝试与数据库建立连接(校验dsn是否正确)err = db .Ping()
if err != nil {
return err
}
return nil
}


数据表插入

package main

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

var db *sql.DB

func main() {
err := initDB()
if err != nil {
fmt.Println(err)
}
insertData()
}

func insertData() {
sqlStr := "insert into users(name,phone) values (?,?)"
ret, err := db.Exec(sqlStr, "张三", "15210000000")
if err != nil {
fmt.Printf("insert failed, err :%v\n", err)
return
}
theID, err := ret.LastInsertId() // 新插入数据的id
if err != nil {
fmt.Printf("get lastinsert ID failed, err:%v\n", err)
return
}
fmt.Printf("insert success, the id is %d.\n", theID)
}
func initDB() (err error) {
// 定义一个初始化数据库的函数func initDB() (err error) {
dsn := "root:root@tcp(127.0.0.1:3306)/school?charset=utf8mb4&parseTime=True" // 不会校验账号密码是否正确// 注意!!!这里不要使用:=,我们是给全局变量赋值,然后在main函数中使用全局变量db
db, err = sql.Open("mysql", dsn)
if err != nil {
return err
}
err = db.Ping()
// 尝试与数据库建立连接(校验dsn是否正确)err = db .Ping()
if err != nil {
return err
}
return nil
}

查询一行数据


type User struct {
id int
name string
password string
avatar string
phone string
}

func queryOneRow() {
s := "select id,name,password,avatar,phone from users where id = ? "
var u User
err := db.QueryRow(s, 1).Scan(&u.id, &u.name, &u.password, &u.avatar, &u.phone)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("%v", u)
}

}

查询多行语句


func queryManyRow() {
s := "select id,name,password,avatar,phone from users "
r, err := db.Query(s)
var u User
defer r.Close()
if err != nil {
fmt.Println(err)
} else {
for r.Next() {
r.Scan(&u.id, &u.name, &u.password, &u.avatar, &u.phone)
fmt.Println(u)
}
}
}

修改数据

func update() {
s := "update users set name= ? where id =1"
r, err := db.Exec(s, "王括")
if err != nil {
fmt.Println(err)
} else {
i, _ := r.RowsAffected()
fmt.Println(i)
}

}

删除操作

func delete() {
s := "delete from users where id = ?"
r, err := db.Exec(s, 3)
if err != nil {
fmt.Println(err)
} else {
i, _ := r.RowsAffected()
fmt.Println(i)
}

}

标签:nil,err,mongodb,fmt,db,golang,func,mysql,id
From: https://blog.51cto.com/u_4483409/5945676

相关文章

  • MySQL5.7.21开启Gtid配置主从复制
    mysql5.7.21开启Gtid配置主从复制一、环境:mysql主库master:10.0.0.101172.168.1.101mysql从库slave:10.0.0.103172.168.1.103mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz......
  • MySQL 之 数据操作
    一 介绍 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括使用INSERT实现数据的插入UPDATE实现数据的更新使用DELETE实现数据的删除使用SELECT查询......
  • MySQL 之 表操作
     一什么是表表(TABLE)是一种结构化的文件,可用来存储某种特定类型的数据。表中的一条记录有对应的标题,标题称之为表的字段。二创建表 CREATETABLE表名(字段......
  • MySQL 之 库操作
     一.系统数据库information_schema:虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等mysql:核心数据库,里面包含用户、权限......
  • MySQL查询性能优化七种武器之索引下推
    ​​MySQL查询性能优化七种武器之索引潜水​​​​MySQL查询性能优化七种武器之链路追踪​​今天要讲的是MySQL的另一种查询性能优化方式— 索引下推(IndexConditionPush......
  • goLang包以及并发编程
    1包包可以区分命名空间,一个文件夹中不能有两个同名文件,go中创建一个包一般是创建一个文件夹,在该文件夹里面的go文件中使用关键字package声明包名称,通常文件夹名称和包名称......
  • 4:数据操作-MySQL
    (目录)4.1插入数据1.插入数据insertinto表名(可以省略)values(不可省略的内容)mysql>insertintoteacher(id,name,phone,address)values(1,'Frank','188888......
  • liunx 系统 mysql 登录初始化
    1.初始化密码登录1.1查看初始化密码: 输入指令  #cat/var/log/mysqld.log日志记录里有初始化密码,复制密码保存登录数据库再修改 ......
  • k8s创建MySQL
    Kubernetes创建MysQL整体流程:创建数据存储PV、PVC;创建MySQL数据库、创建访问入口Service;导入测试数据库test-db创建数据存储PV、PVC这里我们使用nfs作为storageclass......
  • MySQL数据管理
    MySQL数据管理1.外键(了解)在创建表的时候,增加约束CREATETABLE`grade`( `gradeid`INT(10)NOTNULLAUTO_INCREMENTCOMMENT'年级id', `gradename`VARCHAR(50)N......