微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

golang基础-go对数据库的增删改查操作

增加

首先看数据库的结构:

MysqL> desc person; +----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+
| user_id | int(255) | NO | PRI | NULL | auto_increment |
| username | varchar(255) | NO   |     | NULL    |                |
| sex      | varchar(255) | YES  |     | NULL    |                |
| email | varchar(255) | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+
4 rows in set (0.05 sec)
package main

import (
    "fmt"
    _"github.com/go-sql-driver/MysqL"
    "github.com/jmoiron/sqlx"
)

type Person struct {
    UserId   int    `db:"user_id"`
    Username string `db:"username"`
    Sex      string `db:"sex"`
    Email    string `db:"email"`
}

type Place struct {
    Country string `db:"country"`
    City    string `db:"city"`
    TelCode int    `db:"telcode"`
}

var Db *sqlx.DB
func init() {
    database,err := sqlx.Open("MysqL","root:root@tcp(127.0.0.1:3306)/safly")
    if err != nil {
        fmt.Println("open MysqL Failed,",err)
        return
    }
    Db = database
}

func main() {
    r,err := Db.Exec("insert into person(username,sex,email)values(?,?,?)","stu001","man","stu01@qq.com")
    if err != nil {
        fmt.Println("exec Failed,err)
        return
    }
    id,err := r.LastInsertId()
    if err != nil {
        fmt.Println("exec Failed,err)
        return
    }

    fmt.Println("insert succ:",id)
}
MysqL> select * from person; +---------+----------+------+--------------+
| user_id | username | sex | email | +---------+----------+------+--------------+
| 1 | stu001 | man | stu01@qq.com | +---------+----------+------+--------------+
1 row in set (0.00 sec)

查询

package main

import (
    "fmt"
    _ "github.com/go-sql-driver/MysqL"
    "github.com/jmoiron/sqlx"
)

type Person struct {
    UserId   int    `db:"user_id"`
    Username string `db:"username"`
    Sex      string `db:"sex"`
    Email    string `db:"email"`
}

type Place struct {
    Country string `db:"country"`
    City    string `db:"city"`
    TelCode int    `db:"telcode"`
}
var Db *sqlx.DB
func init() {

    database,err)
        return
    }

    Db = database
}

func main() {

    var person []Person
    err := Db.Select(&person,"select user_id,username,email from person where user_id=?", 1)
    if err != nil {
        fmt.Println("exec Failed,err)
        return
    }

    fmt.Println("select succ:",person)
}

输出如下:

PS E:\golang\go_pro\src\safly> go run demo.go
select succ: [{1 stu001 man stu01@qq.com}]
PS E:\golang\go_pro\src\safly>

修改

package main

import (
    "fmt"
    _ "github.com/go-sql-driver/MysqL"
    "github.com/jmoiron/sqlx"
)

type Person struct {
    UserId   int    `db:"user_id"`
    Username string `db:"username"`
    Sex      string `db:"sex"`
    Email    string `db:"email"`
}

type Place struct {
    Country string `db:"country"`
    City    string `db:"city"`
    TelCode int    `db:"telcode"`
}

var Db *sqlx.DB

func init() {

    database,err)
        return
    }

    Db = database
}

func main() {

    _,err := Db.Exec("update person set username=? where user_id=?","stu0001",err)
        return
    }

}
MysqL> select * from person; +---------+----------+------+--------------+
| user_id | username | sex | email | +---------+----------+------+--------------+
| 1 | stu0001 | man | stu01@qq.com | +---------+----------+------+--------------+
1 row in set (0.00 sec)

删除

package main

import (
    "fmt"
    _ "github.com/go-sql-driver/MysqL"
    "github.com/jmoiron/sqlx"
)

type Person struct {
    UserId   int    `db:"user_id"`
    Username string `db:"username"`
    Sex      string `db:"sex"`
    Email    string `db:"email"`
}

type Place struct {
    Country string `db:"country"`
    City    string `db:"city"`
    TelCode int    `db:"telcode"`
}

var Db *sqlx.DB

func init() {

    database,"root:root@tcp(127.0.0.1:3306)/safly")


    if err != nil {
        fmt.Println("open MysqL Failed,err := Db.Exec("delete from person where user_id=?",err)
        return
    }

    fmt.Println("delete succ")
}

输出如下:

MysqL> select * from person;
Empty set (0.00 sec)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


1、Golang指针 在介绍Golang指针隐式间接引用前,先简单说下Go 语言的指针 (Pointer),一个指针可以指向任何一个值的内存地址 它指向那个值的内存地址,在 32 位机器上占用 4 个字节,在 64 位机器上占用 8 个字节,并且与它所指向的值的大小无关。大致上理解如下: 变量名前的
1、概述 1.1 Protocol buffers定义 Protocol buffers 是语言中立、平台中立、可扩展的结构化数据序列化机制,就像 XML,但是它更小、更快、更简单。你只需定义一次数据的结构化方式,然后就可以使用特殊生成的源代码轻松地将结构化数据写入和读取各种数据流,支持各
判断文件是否存在,需要用到"os"包中的两个函数: os.Stat()和os.IsNotExit() func Stat(name string) (FileInfo, error) Stat返回描述文件f的FileInfo类型值。如果出错,错误底层类型是*PathError。 func IsNot
1、编译环境 OS :Loongnix-Server Linux release 8.3 CPU指令集 : loongarch64 平台 : 龙芯 go版本 : go version go1.15.6 linux/loong64 2、go和docker安装 docker安装: y
1、概述 Golang是一种强类型语言,虽然在代码中经常看到i:=12这种写法,这其实是编译器在编译期间自动做了类型推断。编译器会对数据进行类型检查,不同类型的数据不能赋值,不能在函数中传参。强类型语言有一些优势,很多的错误会在编译期间被检查出来,不像php和python等弱类型语言,很多错误只有运
1、概述 在《Golang常用语法糖》这篇博文中我们讲解Golang中常用的12种语法糖,在本文我们主要讲解下接收者方法语法糖。 在介绍Golang接收者方法语法糖前,先简单说下Go 语言的指针 (Pointer),大致上理解如下: 变量名前的 & 符号,是取变量的内存地址,不是取
1、概述 1.1 什么是gRPC RPC的全称是Remote Procedure Call,远程过程调用。RPC是一种协议,它实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型。使用的时候客户端调用server端提供的接口就像是调用本地的函数一样。 而gRP
1、概述 在Golang语言中,函数也是一种数据类型,可以赋值给一个变量,则该变量就是一个函数类型的变量了。通过该变量可以对函数调用。 2、Go语言函数变量详解 定义 func fun() { } var f func() f = fun 说明 我们首先定义了一个 fun 的函数,接着我们声明了一个
1、概述 Swagger是全球最大的OpenAPI规范(OAS)API开发工具框架,支持从设计和文档到测试和部署的整个API生命周期的开发。Swagger是目前最受欢迎的RESTful Api文档生成工具之一,主要的原因如下: 跨平台、跨语言的支持 强大的社区 生态圈 Swagger Tools(S
1、 概述 Protocol buffers 是语言中立、平台中立、可扩展的结构化数据序列化机制,就像 XML,但是它更小、更快、更简单。你只需定义一次数据的结构化方式,然后就可以使用特殊生成的源代码轻松地将结构化数据写入和读取各种数据流,支持各种语言。因为profobuf是二进制数据格式,需要编码