色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

go原生連接mysql

錢淋西2年前12瀏覽0評論

在使用Go語言編寫應(yīng)用程序時,我們經(jīng)常需要和數(shù)據(jù)庫進(jìn)行連接和交互。其中,連接MySQL數(shù)據(jù)庫是最常見的一種情況。在Go語言中,連接MySQL數(shù)據(jù)庫可以使用go-sql-driver/mysql這個官方推薦的MySQL驅(qū)動,也可以直接使用MySQL原生庫。

接下來我們將介紹如何使用MySQL原生庫連接MySQL數(shù)據(jù)庫,以及對數(shù)據(jù)庫進(jìn)行增、刪、改、查操作。

import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql" // 導(dǎo)入MySQL驅(qū)動
)
func main() {
// 創(chuàng)建MySQL連接
db, err := sql.Open("mysql", "username:password@tcp(host:port)/dbname")
if err != nil {
panic(err.Error())
}
defer db.Close() // 關(guān)閉連接
// 測試連接是否成功
err = db.Ping()
if err != nil {
panic(err.Error())
}
fmt.Println("Connected to MySQL database!")
// 插入數(shù)據(jù)
insert, err := db.Query("INSERT INTO users(name, age) VALUES('John', 25)")
if err != nil {
panic(err.Error())
}
defer insert.Close()
// 更新數(shù)據(jù)
update, err := db.Query("UPDATE users SET age=26 WHERE name='John'")
if err != nil {
panic(err.Error())
}
defer update.Close()
// 刪除數(shù)據(jù)
delete, err := db.Query("DELETE FROM users WHERE name='John'")
if err != nil {
panic(err.Error())
}
defer delete.Close()
// 查詢數(shù)據(jù)
results, err := db.Query("SELECT * FROM users")
if err != nil {
panic(err.Error())
}
defer results.Close()
for results.Next() {
var name string
var age int
err = results.Scan(&name, &age)
if err != nil {
panic(err.Error())
}
fmt.Printf("%s is %d years old\n", name, age)
}
}

在代碼中,我們首先導(dǎo)入了database/sql和github.com/go-sql-driver/mysql這兩個包。其中,_ "github.com/go-sql-driver/mysql"是為了在代碼中隱式地導(dǎo)入MySQL驅(qū)動。

在main函數(shù)中,我們先創(chuàng)建MySQL連接。創(chuàng)建連接時需要指定MySQL的用戶名、密碼、主機(jī)地址、端口號和要連接的數(shù)據(jù)庫名。連接創(chuàng)建成功后,我們使用db.Ping()函數(shù)測試連接是否成功。連接測試成功后,我們就可以開始對數(shù)據(jù)庫進(jìn)行增、刪、改、查操作了。

在代碼中,我們使用db.Query()函數(shù)執(zhí)行SQL語句并獲取結(jié)果。這個函數(shù)返回的是一個Rows對象,其中包含了SQL語句執(zhí)行后返回的所有結(jié)果。代碼中還使用了db.Query()、db.Query()和db.Query()三個函數(shù)分別對數(shù)據(jù)庫進(jìn)行插入、更新和刪除操作。這些語句的執(zhí)行結(jié)果并不包含實(shí)際的數(shù)據(jù),通常只包含執(zhí)行結(jié)果是否成功的信息。

最后,我們使用db.Query()函數(shù)執(zhí)行SELECT語句,并將結(jié)果放入results對象中。我們使用for循環(huán)遍歷results對象中的所有結(jié)果,并使用results.Scan()函數(shù)將結(jié)果賦值給變量name和age,然后輸出到控制臺中。