Go语言学习之操作MYSQL实现CRUD

Go语言学习之操作MYSQL实现CRUD

本文主要讲解如何使用Go语言操作MYSQL数据库实现CRUD(增加、查询、修改、删除)操作。

准备工作

在开始之前,需要先安装好Go语言开发环境以及MYSQL数据库,并且在Go语言项目中导入github.com/go-sql-driver/mysql驱动。

建立连接

使用Go语言连接MYSQL数据库需要用到database/sql包。下面是连接代码:

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)
func main() {
    db, err := sql.Open("mysql", "user:password@tcp(host:port)/database")
    if err != nil {
        fmt.Println(err)
    }
    defer db.Close()
}

其中,mysql为驱动名称,user为连接MYSQL数据库的用户名,password为连接MYSQL数据库的密码,host为MYSQL数据库的主机名,port为MYSQL数据库的端口号,database为MYSQL数据库名称。

增加数据

使用Go语言往MYSQL数据库中插入数据需要用到Exec函数。下面是增加数据代码:

func insertData(name string, age int) {
    sql := "INSERT INTO student(name,age) VALUES(?,?)"
    stm, err := db.Prepare(sql)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer stm.Close()
    res, err := stm.Exec(name, age)
    if err != nil {
        fmt.Println(err)
        return
    }
    rowsAffected, _ := res.RowsAffected()
    fmt.Printf("插入成功,影响行数:%d", rowsAffected)
}

其中,student为表名,name和age为列名,?为参数占位符,name和age为要插入的参数。

查询数据

使用Go语言从MYSQL数据库中查询数据需要用到Query函数。下面是查询数据代码:

func queryData() {
    sql := "SELECT * FROM student"
    rows, err := db.Query(sql)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer rows.Close()
    for rows.Next() {
        var id int
        var name string
        var age int
        err := rows.Scan(&id, &name, &age)
        if err != nil {
            fmt.Println(err)
            return
        }
        fmt.Printf("id=%d, name=%s, age=%d\n", id, name, age)
    }
}

其中,SELECT * FROM student为要查询的SQL语句,id、name和age为表中的列名,rows.Scan函数可以将查询结果扫描到变量中。

修改数据

使用Go语言修改MYSQL数据库中的数据需要用到Exec函数。下面是修改数据代码:

func updateData(name string, age int) {
    sql := "UPDATE student SET age=? WHERE name=?"
    stm, err := db.Prepare(sql)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer stm.Close()
    res, err := stm.Exec(age, name)
    if err != nil {
        fmt.Println(err)
        return
    }
    rowsAffected, _ := res.RowsAffected()
    fmt.Printf("更新成功,影响行数:%d", rowsAffected)
}

其中,UPDATE student SET age=? WHERE name=?为要执行的SQL语句,?为参数占位符。

删除数据

使用Go语言从MYSQL数据库中删除数据需要用到Exec函数。下面是删除数据代码:

func deleteData(name string) {
    sql := "DELETE FROM student WHERE name = ?"
    stm, err := db.Prepare(sql)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer stm.Close()
    res, err := stm.Exec(name)
    if err != nil {
        fmt.Println(err)
        return
    }
    rowsAffected, _ := res.RowsAffected()
    fmt.Printf("删除成功,影响行数:%d", rowsAffected)
}

其中,DELETE FROM student WHERE name=?为要执行的SQL语句,?为参数占位符。

示例说明

下面是一个完整的示例,演示了如何使用Go语言操作MYSQL数据库实现增加、查询、修改和删除数据:

package main
import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)
var db *sql.DB
func init() {
    connStr := "user:password@tcp(host:port)/database"
    var err error
    db, err = sql.Open("mysql", connStr)
    if err != nil {
        fmt.Println(err)
    }
}
func insertData(name string, age int) {
    sql := "INSERT INTO student(name,age) VALUES(?,?)"
    stm, err := db.Prepare(sql)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer stm.Close()
    res, err := stm.Exec(name, age)
    if err != nil {
        fmt.Println(err)
        return
    }
    rowsAffected, _ := res.RowsAffected()
    fmt.Printf("插入成功,影响行数:%d", rowsAffected)
}
func queryData() {
    sql := "SELECT * FROM student"
    rows, err := db.Query(sql)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer rows.Close()
    for rows.Next() {
        var id int
        var name string
        var age int
        err := rows.Scan(&id, &name, &age)
        if err != nil {
            fmt.Println(err)
            return
        }
        fmt.Printf("id=%d, name=%s, age=%d\n", id, name, age)
    }
}
func updateData(name string, age int) {
    sql := "UPDATE student SET age=? WHERE name=?"
    stm, err := db.Prepare(sql)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer stm.Close()
    res, err := stm.Exec(age, name)
    if err != nil {
        fmt.Println(err)
        return
    }
    rowsAffected, _ := res.RowsAffected()
    fmt.Printf("更新成功,影响行数:%d", rowsAffected)
}
func deleteData(name string) {
    sql := "DELETE FROM student WHERE name = ?"
    stm, err := db.Prepare(sql)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer stm.Close()
    res, err := stm.Exec(name)
    if err != nil {
        fmt.Println(err)
        return
    }
    rowsAffected, _ := res.RowsAffected()
    fmt.Printf("删除成功,影响行数:%d", rowsAffected)
}
func main() {
    insertData("Tom", 18)
    insertData("Jack", 19)
    insertData("David", 20)

    queryData()

    updateData("Tom", 20)

    queryData()

    deleteData("David")

    queryData()
}

运行该示例可以看到从MYSQL数据库中插入、查询、修改和删除数据的结果。

总结

本文主要讲解了如何使用Go语言操作MYSQL数据库实现CRUD(增加、查询、修改、删除)操作。首先需要建立连接,然后分别用到Exec和Query函数实现增加、查询、修改和删除数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Go语言学习之操作MYSQL实现CRUD - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • MySQL datetime类型与时间、日期格式字符串大小比较的方法

    MySQL中的datetime类型和各种时间、日期格式字符串之间可以进行大小比较。本文将介绍如何比较datetime类型和时间、日期格式字符串之间的大小,并提供两个实际应用的示例进行说明。 datetime类型和时间、日期格式字符串的相互转换 MySQL提供了许多将datetime类型和时间、日期格式字符串进行相互转换的函数。这里主要介绍以下三个函数: DA…

    database 2023年5月22日
    00
  • python 如何用urllib与服务端交互(发送和接收数据)

    Python中的urllib库提供了许多用于与服务端进行HTTP或HTTPS通信的方法,包括发送和接收数据。下面是Python如何用urllib与服务端交互(发送和接收数据)完整攻略: 1. 发送数据: POST方法: 使用urllib.request.urlopen()函数发送HTTP POST请求,将数据作为请求体发送。数据通常以字符串或字节的形式提供,…

    database 2023年5月21日
    00
  • mysql alter语句用法实例

    下面我来详细讲解”mysql alter语句用法实例”的完整攻略。 什么是mysql alter语句? mysql alter语句用于修改或更改现有MySQL数据库的结构或表。通过alter语句,您可以添加,删除或修改表的列、修改列属性、更改索引等。更改表结构时,要注意备份数据,确保数据的安全性。 alter语句的使用方法 alter语句的基本语法如下: A…

    database 2023年5月22日
    00
  • 如何选择MySQL存储引擎?

    MySQL是一个开源的关系型数据库管理系统,拥有多种存储引擎(Storage Engine),不同的引擎具有不同的特点和性能表现。可通过修改数据表的存储引擎来优化数据库的性能。 存储引擎介绍 MySQL支持的存储引擎较多,具体如下: 1 InnoDB:支持ACID事务,并发性高,行级锁定、MVCC、自适应哈希索引、为外键提供支持。 2 MyISAM:不支持事…

    MySQL 2023年3月9日
    00
  • SQL Server异常代码处理的深入讲解

    SQL Server异常代码处理的深入讲解 在 SQL Server 中,异常代码处理(Exception Handling)是非常重要的技术之一。良好的异常处理可以帮助我们更好地处理运行中的错误,保障系统的稳定性和安全性。本文将深入讲解 SQL Server 异常代码处理,包括常见的异常类型、异常处理方式及异常处理的最佳实践。 常见异常类型 在 SQL S…

    database 2023年5月21日
    00
  • go程序部署到linux上运行的实现方法

    下面是关于将Go程序部署到Linux上运行的完整攻略。 1. 准备工作 在开始部署之前需要进行一些准备工作: 1.1 确保本地环境已经安装 Go 需要先在本地环境安装好 Go 开发环境,可以通过官方文档进行安装。 官方文档:https://golang.org/doc/install 1.2 确保远程服务器已经准备好 需要确保已经有准备好的远程服务器,并且拥…

    database 2023年5月22日
    00
  • mysql基础知识扫盲

    MySQL基础知识扫盲 MySQL是一种常用的关系型数据库管理系统,本文将从以下几个方面介绍MySQL的基础知识: 安装MySQL 在Linux系统中,可以通过以下命令安装MySQL: sudo apt-get install mysql-server 在Windows系统中,需要在官网下载MySQL安装包,并按照提示进行安装。 登录MySQL 在Linux…

    database 2023年5月22日
    00
  • 一个提升PostgreSQL性能的小技巧

    当优化数据库性能时,一个小技巧就是使用数据库索引。索引可以提高数据查询和排序的效率,减少数据需要扫描的次数。下面是一个详细的攻略来提升PostgreSQL性能的小技巧。 步骤一:理解索引 索引是一种数据结构,它可以加速查询和排序。PostgreSQL支持许多不同的索引类型(如B-tree、哈希、GiST等)。 步骤二:确定哪些列需要索引 在设计数据库时,需要…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部