先在PostgreSQL數據庫中建一個表,可以使用PostgreSQL官方的pgAdmin來完成:
CREATE TABLE userinfo ( uid serial NOT NULL, username character varying(100) NOT NULL, departname character varying(500) NOT NULL, Created date, CONSTRAINT userinfo_pkey PRIMARY KEY (uid) ) WITH (OIDS=FALSE); CREATE TABLE userdeatail ( uid integer, intro character varying(100), profile character varying(100) ) WITH(OIDS=FALSE);
然后運行以下代碼,實現連接數據庫和增刪查改,請自行更改參數配置部分:
package main import ( "database/sql" "fmt" _ "github.com/lib/pq" ) var db *sql.DB func sqlOpen() { var err error db, err = sql.Open("postgres", "port=5433 user=postgres password=123456 dbname=ficow sslmode=disable") //port是數據庫的端口號,默認是5432,如果改了,這里一定要自定義; //user就是你數據庫的登錄帳號; //dbname就是你在數據庫里面建立的數據庫的名字; //sslmode就是安全驗證模式; //還可以是這種方式打開 //db, err := sql.Open("postgres", "postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full") checkErr(err) } func sqlInsert() { //插入數據 stmt, err := db.Prepare("INSERT INTO userinfo(username,departname,created) VALUES($1,$2,$3) RETURNING uid") checkErr(err) res, err := stmt.Exec("ficow", "軟件開發部門", "2017-03-09") //這里的三個參數就是對應上面的$1,$2,$3了 checkErr(err) affect, err := res.RowsAffected() checkErr(err) fmt.Println("rows affect:", affect) } func sqlDelete() { //刪除數據 stmt, err := db.Prepare("delete from userinfo where uid=$1") checkErr(err) res, err := stmt.Exec(1) checkErr(err) affect, err := res.RowsAffected() checkErr(err) fmt.Println("rows affect:", affect) } func sqlSelect() { //查詢數據 rows, err := db.Query("SELECT * FROM userinfo") checkErr(err) println("-----------") for rows.Next() { var uid int var username string var department string var created string err = rows.Scan(&uid, &username, &department, &created) checkErr(err) fmt.Println("uid = ", uid, "\nname = ", username, "\ndep = ", department, "\ncreated = ", created, "\n-----------") } } func sqlUpdate() { //更新數據 stmt, err := db.Prepare("update userinfo set username=$1 where uid=$2") checkErr(err) res, err := stmt.Exec("ficow", 1) checkErr(err) affect, err := res.RowsAffected() checkErr(err) fmt.Println("rows affect:", affect) } func sqlClose() { db.Close() } func checkErr(err error) { if err != nil { panic(err) } } func sqlTest() { sep := "----------\n" sqlOpen() println(sep, "*sqlOpen") sqlSelect() println(sep, "*sqlSelect") sqlInsert() sqlSelect() println(sep, "*sqlInsert") sqlUpdate() sqlSelect() println(sep, "*sqlUpdate") sqlDelete() sqlSelect() println(sep, "*sqlDelete") sqlClose() println(sep, "*sqlClose") } func main() { sqlTest() }
相關鏈接:
可以查看這個驅動庫的文檔進行學習: https://godoc.org/github.com/lib/pq
另外,還要感謝這位作者的教程: http://www.cnblogs.com/songxingzhu/p/5024517.html
轉載請注明出處:http://www.cnblogs.com/ficow/p/6537238.html ,謝謝!