我已经从以下位置导入了驱动程序 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/