mysql - 如何在Go中创建MySQL数据库(表)并进行CRUD操作

标签 mysql database api go crud

我已经从以下位置导入了驱动程序 github.com/go-sql-driver/mysql 并已成功建立与数据库的连接。 我只想开始创建一个表并能够从中更新、获取和删除数据 我见过的其他资源似乎跳过了这一部分,或者只是不清楚(他们似乎开始获取数据,我想..数据来自哪里,他们是如何创建它的),我只是想清楚解释谢谢。

// main.go
package main

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

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

2020 年 5 月 16 日更新:
事实证明,正如 @mkopriva 在评论中指出的那样,我什至从来不知道数据库服务器必须首先运行(我想这是我挑战的最初来源......现在我想我还能做什么甚至想连接到...duh...lol)
附:在我的例子中,防火墙不是问题。

最佳答案

您可以使用方法Exec , Query ,和QueryRow*sql.DB 提供,用于将 SQL 命令发送到连接的数据库。

func main() {
    db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
    if err != nil {
        panic(err)
    } else if err = db.Ping(); err != nil {
        panic(err)
    }
    defer db.Close()

    _, err := db.Exec("CREATE TABLE IF NOT EXISTS mytable (id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, some_text TEXT NOT NULL)")
    if err != nil {
        panic(err)
    }

    // Create
    res, err := db.Exec("INSERT INTO mytable (some_text) VALUES (?)", "hello world")
    if err != nil {
        panic(err)
    }

    // get the id of the newly inserted record
    id, err := res.LastInsertId()
    if err != nil {
        panic(err)
    }

    // Read
    var someText string
    row := db.QueryRow("SELECT some_text FROM mytable WHERE id = ? LIMIT 1", id)
    if err := row.Scan(&someText); err != nil {
        panic(err)
    }
    fmt.Println(someText)

    // Update
    _, err = db.Exec("UPDATE mytable SET some_text = ? WHERE id = ?", "Hello, 世界", id)
    if err != nil {
        panic(err)
    }

    // Delete
    _, err = db.Exec("DELETE FROM mytable WHERE id = ?", id)
    if err != nil {
        panic(err)
    }
}

关于mysql - 如何在Go中创建MySQL数据库(表)并进行CRUD操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61789889/

相关文章:

php - 插入时不刷新,php 和 ajax 不起作用

c# - 如果数据库尚不存在则创建

php - 去掉()前后的 ' '

python - 使用 Python(最好是请求)从 Binance API 获取 Candlestick/Kline 数据以获取 JSON Dat

api - RESTful API 中的多个身份验证级别

xcode - 访问 Xcode 文档显示登录窗口

MySQL查找最接近点的多边形

php - Codeigniter 模型从 -7 天开始获取行

Mysql触发器帮助-插入之前

php - 导出表时如何创建新列。 Laravel maat网站/excel