Go基礎編程實踐(十)—— 數據庫

從數據庫中讀取數據

http://sqlitebrowser.org/下載sqlite3可視化工具,在本main.go同目錄下建立personal.db數據庫,建立表以下:
git

package main

import (
    "database/sql"
    "fmt"

    _ "github.com/mattn/go-sqlite3"
)
// 用struct類型未來自SQL數據庫的數據映射到內存中的對象
type Profile struct {
    ProfileId int
    FirstName string
    LastName string
    Age int
}

func main() {
    db, err := sql.Open("sqlite3", "./personal.db")
    checkError(err)
    var profile Profile
    // Query可使用參數
    rows, err := db.Query("select ProfileId, FirstName, LastName, Age from Profile where FirstName = ? and LastName = ?", "Tarik", "Guney")
    checkError(err)
    for rows.Next() {
        err := rows.Scan(&profile.ProfileId, &profile.FirstName, &profile.LastName, &profile.Age)
        checkError(err)
        fmt.Println(profile)
    }
    rows.Close()
    db.Close()
}

func checkError(err error) {
    if err != nil {
        panic(err)
    }
}

將數據插入數據庫

package main

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

type Profile struct{
    ProfileId int
    FirstName string
    LastName string
    Age int
}

func main(){
    db, err := sql.Open("sqlite3", "./personal.db")
    checkError(err)
    /* 更新數據庫數據
    statement, err := db.Prepare("update Profile set FirstName = ? where ProfileId = ?")
    checkError(err)
    statement.Exec("Martha", 5)
    */
    statement, err := db.Prepare("insert into Profile (FirstName, LastName, Age) values(?,?,?)")
    checkError(err)
    statement.Exec("Jessica", "McArthur", 30)
    /* 刪除數據庫數據
    statement ,err := db.Prepare("delete from Profile where  ProfileId = ?")
    checkError(err)
    statement.Exec(3)
    */
    var profile Profile
    rows, err := db.Query("select ProfileId, FirstName, LastName, Age from Profile")
    checkError(err)
    for rows.Next(){
        err := rows.Scan(&profile.ProfileId, &profile.FirstName, &profile.LastName, &profile.Age)
        checkError(err)
        fmt.Println(profile)
    }
    rows.Close()
    db.Close()
}

func checkError(err error) {
    if (err != nil) {
        panic(err)
    }
}
相關文章
相關標籤/搜索