溫馨提示×

Go語言在Linux下的數據庫操作技巧

小樊
35
2025-08-01 07:41:10
欄目: 編程語言

在Linux下使用Go語言進行數據庫操作時,需要安裝相應的數據庫驅動,并使用Go的database/sql包進行數據庫操作。以下是一些基本的操作技巧和示例代碼:

安裝數據庫驅動

MySQL

在終端中運行以下命令來安裝MySQL驅動:

go get -u github.com/go-sql-driver/mysql

PostgreSQL

在終端中運行以下命令來安裝PostgreSQL驅動:

go get -u github.com/lib/pq

SQLite

在終端中運行以下命令來安裝SQLite3驅動:

go get github.com/mattn/go-sqlite3

連接數據庫

MySQL 連接示例

package main

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

func main() {
	// 數據庫連接信息
	dsn := "user:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
	// 連接到數據庫
	db, err := sql.Open("mysql", dsn)
	if err != nil {
		panic(err)
	}
	defer db.Close()
	// 測試數據庫連接
	err = db.Ping()
	if err != nil {
		panic(err)
	}
	fmt.Println("Connected to the MySQL database!")
}

PostgreSQL 連接示例

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/lib/pq"
)

func main() {
	// 數據庫連接信息
	connStr := "host=localhost user=postgres password=secret dbname=mydb sslmode=disable"
	// 連接到數據庫
	db, err := sql.Open("postgres", connStr)
	if err != nil {
		panic(err)
	}
	defer db.Close()
	// 測試數據庫連接
	err = db.Ping()
	if err != nil {
		panic(err)
	}
	fmt.Println("Connected to the PostgreSQL database!")
}

SQLite 連接示例

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/mattn/go-sqlite3"
)

func main() {
	// 連接數據庫
	db, err := sql.Open("sqlite3", "./example.db")
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()
	// 測試數據庫連接
	err = db.Ping()
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("Connected to the SQLite database!")
}

基本操作

查詢單行數據(QueryRow)

var name string
err := db.QueryRow("SELECT name FROM users WHERE id = ?", 1).Scan(&name)
if err != nil {
	log.Fatal(err)
}
fmt.Println("用戶名:", name)

查詢多行數據(Query)

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
	rows.Scan(&id, &name)
	fmt.Println(id, name)
}

插入數據(Exec)

result, err := db.Exec("INSERT INTO users(name, age) VALUES(?, ?)", "Alice", 25)
id, _ := result.LastInsertId()
fmt.Println("新插入用戶ID:", id)

更新與刪除

// 更新
_, err = db.Exec("UPDATE users SET age=? WHERE id=?", 30, 1)

// 刪除
_, err = db.Exec("DELETE FROM users WHERE id=?", 1)

使用預處理語句(Prepare)

stmt, err := db.Prepare("INSERT INTO users(name, age) VALUES(?, ?)")

以上是在Linux下使用Go語言進行數據庫操作的一些基本技巧和示例代碼。根據具體的數據庫類型和需求,可以選擇相應的驅動并進行相應的操作。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女