請先在命令提示字元中安裝 Go 的 PostgreSQL 驅動。

最新資訊可以參考:https://github.com/lib/pq
命令提示字元中輸入:go get github.com/lib/pq 
接著再輸入:go install github.com/lib/pq
如果沒有出現任何錯誤訊息的話,恭喜!! 安裝驅動完畢 !!

        我先在 PostgerSQL 建立一個 test 資料庫,使用者名稱是 postgres,密碼是 a 
接著,我在 test 資料庫中新增一個名稱為 my 的資料表,裡面分別有 use 與 pw 欄位。

他們看起來像這樣:

使用者名稱:postgres
密碼:a
資料庫:test

 my <表>
 use <欄1>  pw <欄2>
   

 


程式碼:

package main

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

func main() {

       // 初始化資料庫:
       db, err := sql.Open("postgres", "user=postgres password=a dbname=test sslmode=disable")
       defer db.Close()
       checkErr(err)

       // 新增資料列:
       stmt, err := db.Prepare("INSERT INTO my(use,pw) VALUES($1,$2);")
       checkErr(err)
       res, err = stmt.Exec("apple", "iphone哀鳳")
       checkErr(err)
       println("已新增資料列。\n")

       // 查詢資料列:
       println("查詢資料列:")
       rows, err := db.Query("SELECT * FROM my")
       checkErr(err)
       var use, pw string
       for rows.Next() {
              err = rows.Scan(&use, &pw)
              checkErr(err)
              fmt.Println("\t", use, pw)
       }

       // 更改資料列:
       println("\n更改資料列中...")
       stmt, err = db.Prepare("UPDATE my SET pw=$1 WHERE use=$2")
       checkErr(err)
       res, err = stmt.Exec("ipad2", "apple")
       checkErr(err)
       affect, err := res.RowsAffected()
       checkErr(err)
       println("已更改", affect, "個資料列。\n")

       // 查詢資料列:
       println("查詢資料列:")
       rows, err = db.Query("SELECT * FROM my")
       checkErr(err)
       for rows.Next() {
              err = rows.Scan(&use, &pw)
              checkErr(err)
              fmt.Println("\t", use, pw)
       }


       // 删除資料列:
       stmt, err = db.Prepare("DELETE FROM my WHERE use=$1")
       checkErr(err)
       res, err = stmt.Exec("apple")
       checkErr(err)
       affect, err = res.RowsAffected()
       checkErr(err)
       println("\n已刪除", affect, "個資料列。\n")

       // 查詢資料列:
       println("查詢資料列:")
       rows, err = db.Query("SELECT * FROM my")
       checkErr(err)
       if(!rows.Next()){
              print("資料列是空的 !!")
       }
}

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


輸出結果:


已新增資料列。

查詢資料列:
apple iphone哀鳳

更改資料列中...
已更改 1 個資料列。

查詢資料列:
apple ipad2

已刪除 1 個資料列。

查詢資料列:
資料列是空的 !!

 

 

 

 

 

創作者介紹
創作者 黃彥霖 的頭像
黃彥霖

彥霖 實驗筆記

黃彥霖 發表在 痞客邦 留言(0) 人氣()