← 返回主页

第14课: 数据库操作

连接数据库

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

db, err := sql.Open("postgres", "connection_string")
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("%d: %s\n", id, name)
}

插入数据

result, err := db.Exec("INSERT INTO users (name, email) VALUES ($1, $2)",
    "Alice", "alice@example.com")
if err != nil {
    log.Fatal(err)
}

id, _ := result.LastInsertId()
affected, _ := result.RowsAffected()

预处理语句

stmt, err := db.Prepare("SELECT name FROM users WHERE id = $1")
if err != nil {
    log.Fatal(err)
}
defer stmt.Close()

var name string
err = stmt.QueryRow(1).Scan(&name)

事务

tx, err := db.Begin()
if err != nil {
    log.Fatal(err)
}

_, err = tx.Exec("INSERT INTO users (name) VALUES ($1)", "Bob")
if err != nil {
    tx.Rollback()
    return
}

tx.Commit()