在Go語言中,連線和運算元據庫通常使用database/sql
包,它提供了一個數據庫抽象層,支援多種資料庫引擎,如MySQL、PostgreSQL、SQLite等。下面我將以MySQL為例,詳細講解如何使用Go語言連線和運算元據庫。
1. 安裝MySQL驅動
首先,你需要安裝一個MySQL驅動,以便能夠與MySQL資料庫進行通訊。推薦使用github.com/go-sql-driver/mysql
,可以透過以下命令安裝:
go get -u github.com/go-sql-driver/mysql
2. 連線資料庫
使用sql.Open
函式建立與MySQL資料庫的連線。該函式接受兩個引數:資料庫驅動名稱和連線字串。連線字串包含了連線資料庫所需的所有資訊,如使用者名稱、密碼、主機名、埠和資料庫名等。
示例程式碼:
package main import ( "database/sql" "fmt" "log" _ "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 { log.Fatal(err) } defer db.Close() // 驗證連線 err = db.Ping() if err != nil { log.Fatal(err) } fmt.Println("Connected to database successfully!") }
3. 執行查詢
使用db.Query
方法執行SQL查詢,並獲取*sql.Rows
結果集。你可以使用rows.Next()
方法遍歷結果集,並使用rows.Scan()
方法將每行資料掃描到變數中。
示例程式碼:
package main import ( "database/sql" "fmt" "log" _ "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 { log.Fatal(err) } defer db.Close() // 執行查詢 rows, err := db.Query("SELECT id, name FROM users") if err != nil { log.Fatal(err) } defer rows.Close() // 遍歷結果集 for rows.Next() { var id int var name string err := rows.Scan(&id, &name) if err != nil { log.Fatal(err) } fmt.Printf("ID: %d, Name: %s\n", id, name) } // 檢查遍歷過程中是否出現錯誤 if err := rows.Err(); err != nil { log.Fatal(err) } }
4. 執行插入、更新和刪除操作
使用db.Exec
方法執行SQL語句,如插入、更新和刪除操作。db.Exec
方法返回一個sql.Result
物件,你可以使用它來獲取受影響的行數。
示例程式碼:
package main import ( "database/sql" "fmt" "log" _ "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 { log.Fatal(err) } defer db.Close() // 插入資料 _, err = db.Exec("INSERT INTO users (name, age) VALUES (?, ?)", "Alice", 25) if err != nil { log.Fatal(err) } fmt.Println("Data inserted successfully!") // 更新資料 _, err = db.Exec("UPDATE users SET age = ? WHERE id = ?", 30, 1) if err != nil { log.Fatal(err) } fmt.Println("Data updated successfully!") // 刪除資料 _, err = db.Exec("DELETE FROM users WHERE id = ?", 1) if err != nil { log.Fatal(err) } fmt.Println("Data deleted successfully!") }
以上是使用Go語言連線和操作MySQL資料庫的基本步驟。