1. 安装数据库驱动

Go语言的数据库驱动有很多,例如mysql、postgres、sqlite等等。这里以mysql为例进行说明。

安装mysql驱动:

go get github.com/go-sql-driver/mysql
  1. 连接数据库

连接数据库需要用到数据库驱动提供的api,mysql驱动提供的是sql.Open方法,使用方法如下:

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

func main() {
    // 连接数据库
    db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/test_db")
    if err != nil {
        panic(err)
    }
    defer db.Close()
}

其中,mysql表示使用mysql驱动,root:password表示用户名和密码,localhost:3306表示数据库地址和端口号,test_db表示数据库名。

  1. 查询数据

连接数据库之后,就可以查询数据了。查询数据需要使用Query方法,使用方法如下:

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

func main() {
    db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/test_db")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // 查询数据
    rows, err := db.Query("SELECT id, name, age FROM user")
    if err != nil {
        panic(err)
    }
    defer rows.Close()

    for rows.Next() {
        var id int
        var name string
        var age int
        err = rows.Scan(&id, &name, &age)
        if err != nil {
            panic(err)
        }
        fmt.Println(id, name, age)
    }
}

其中,SELECT id, name, age FROM user表示查询user表中的id、name、age三个字段。

  1. 插入数据

插入数据需要使用Exec方法,使用方法如下:

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

func main() {
    db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/test_db")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // 插入数据
    result, err := db.Exec("INSERT INTO user(name, age) VALUES (?, ?)", "Tom", 20)
    if err != nil {
        panic(err)
    }
    fmt.Println(result.LastInsertId())
}

其中,INSERT INTO user(name, age) VALUES (?, ?)表示插入一条name为Tom,age为20的数据。?是占位符,可以避免sql注入攻击。

  1. 更新数据

更新数据需要使用Exec方法,使用方法如下:

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

func main() {
    db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/test_db")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // 更新数据
    result, err := db.Exec("UPDATE user SET age = ? WHERE name = ?", 21, "Tom")
    if err != nil {
        panic(err)
    }
    fmt.Println(result.RowsAffected())
}

其中,UPDATE user SET age = ? WHERE name = ?表示更新name为Tom的数据的age为21。

  1. 删除数据

删除数据需要使用Exec方法,使用方法如下:

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

func main() {
    db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/test_db")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // 删除数据
    result, err := db.Exec("DELETE FROM user WHERE name = ?", "Tom")
    if err != nil {
        panic(err)
    }
    fmt.Println(result.RowsAffected())
}

其中,DELETE FROM user WHERE name = ?表示删除name为Tom的数据。

golang读取数据库

原文地址: https://www.cveoy.top/t/topic/ppS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录