MySQL将变量传递给GoLang查询

MySQL将变量传递给GoLang查询

在本文中,我们将介绍如何在GoLang中使用MySQL查询语句时,将变量作为查询参数。

阅读更多:MySQL 教程

1. 连接MySQL数据库

在GoLang中使用MySQL查询语句,需要先连接到MySQL数据库。可以使用官方的mysql驱动程序进行连接。具体的操作可以参考下面的示例代码:

import (
    "database/sql"
    "fmt"

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

func main() {
    // 设置数据库连接信息
    db, err := sql.Open("mysql", "root:123456@tcp(localhost:3306)/test")
    if err != nil {
        fmt.Println("数据库连接失败:", err)
        return
    }
    defer db.Close()

    // 测试连接是否成功
    if err := db.Ping(); err != nil {
        fmt.Println("数据库连接失败:", err)
        return
    }
    fmt.Println("数据库连接成功。")
}

2. 执行MySQL查询语句

使用GoLang查询MySQL数据库,需要使用exec或query方法执行MySQL查询语句。下面分别介绍这两种方法。

2.1. 使用exec方法执行查询语句

使用exec方法执行查询语句,可以执行INSERT、UPDATE、DELETE等操作,示例代码如下:

// 插入数据
_, err := db.Exec("INSERT INTO user (name, age) VALUES (?, ?)", "Tom", 18)
if err != nil {
    fmt.Println("插入数据失败:", err)
}

// 修改数据
_, err := db.Exec("UPDATE user SET age = ? WHERE name = ?", 20, "Tom")
if err != nil {
    fmt.Println("修改数据失败:", err)
}

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

2.2. 使用query方法执行查询语句

使用query方法执行查询语句,可以执行SELECT等查询操作,示例代码如下:

// 查询数据
rows, err := db.Query("SELECT * FROM user WHERE age > ?", 18)
if err != nil {
    fmt.Println("查询数据失败:", err)
}
defer rows.Close()

// 遍历数据
for rows.Next() {
    var id int
    var name string
    var age int
    if err := rows.Scan(&id, &name, &age); err != nil {
        fmt.Println("遍历数据失败:", err)
    }
    fmt.Printf("id:%d, name:%s, age:%d\n", id, name, age)
}

3. 将变量作为查询参数

使用GoLang查询MySQL数据库时,经常需要将变量作为查询参数。下面介绍如何使用占位符来将变量作为查询参数。

// 定义变量
age := 18

// 使用占位符
rows, err := db.Query("SELECT * FROM user WHERE age > ?", age)

在上面的示例代码中,使用占位符“?”将变量age作为查询参数传递给了MySQL查询语句。在实际开发中,使用占位符可以有效地防止SQL注入攻击。

4. 完整示例代码

综合以上的内容,下面是一个完整的GoLang查询MySQL数据库的示例代码:

import (
    "database/sql"
    "fmt"

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

func main() {
    // 设置数据库连接信息
    db, err := sql.Open("mysql", "root:123456@tcp(localhost:3306)/test")
    if err != nil {
        fmt.Println("数据库连接失败:", err)
        return
    }
    defer db.Close()

    // 测试连接是否成功
    if err := db.Ping(); err != nil {
        fmt.Println("数据库连接失败:", err)
        return
    }
    fmt.Println("数据库连接成功。")

    // 查询数据
    age := 18
    rows, err := db.Query("SELECT * FROM user WHERE age > ?", age)
    if err != nil {
        fmt.Println("查询数据失败:", err)
        return
   }
    defer rows.Close()

    // 遍历数据
    for rows.Next() {
        var id int
        var name string
        var age int
        if err := rows.Scan(&id, &name, &age); err != nil {
            fmt.Println("遍历数据失败:", err)
            return
        }
        fmt.Printf("id:%d, name:%s, age:%d\n", id, name, age)
    }

    // 插入数据
    res, err := db.Exec("INSERT INTO user (name, age) VALUES (?, ?)", "Tom", 18)
    if err != nil {
        fmt.Println("插入数据失败:", err)
        return
    }
    id, _ := res.LastInsertId()
    fmt.Println("插入数据成功,ID为:", id)

    // 修改数据
    res, err = db.Exec("UPDATE user SET age = ? WHERE name = ?", 20, "Tom")
    if err != nil {
        fmt.Println("修改数据失败:", err)
        return
    }
    affectRows, _ := res.RowsAffected()
    fmt.Println("修改数据成功,影响行数为:", affectRows)

    // 删除数据
    res, err = db.Exec("DELETE FROM user WHERE name = ?", "Tom")
    if err != nil {
        fmt.Println("删除数据失败:", err)
        return
    }
    affectRows, _ = res.RowsAffected()
    fmt.Println("删除数据成功,影响行数为:", affectRows)
}

总结

本文介绍了如何在GoLang中使用MySQL查询语句,包括连接MySQL数据库、执行MySQL查询语句以及将变量作为查询参数。以上内容是GoLang开发者进行MySQL开发的基础,通过本文的学习,相信读者已经掌握了使用GoLang查询MySQL数据库的方法和技巧。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程