Skip to content

Instantly share code, notes, and snippets.

@hectorgool
Created September 12, 2016 18:04
Show Gist options
  • Select an option

  • Save hectorgool/e09389db4f050395a7b5ac25268078a1 to your computer and use it in GitHub Desktop.

Select an option

Save hectorgool/e09389db4f050395a7b5ac25268078a1 to your computer and use it in GitHub Desktop.
CRUD postgreSQL
/*
https://astaxie.gitbooks.io/build-web-application-with-golang/content/en/05.4.html
CREATE DATABASE "prueba" WITH ENCODING 'UTF8';
CREATE USER "santo" WITH PASSWORD 'asdfasdf';
GRANT ALL ON DATABASE "prueba" TO santo;
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);
\d+ userinfo
*/
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
"time"
)
const (
DB_USER = "postgres"
DB_PASSWORD = "asdf"
DB_NAME = "prueba"
)
func main() {
//INSERT
/***************************************************************************************/
dbinfo := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable",
DB_USER, DB_PASSWORD, DB_NAME)
db, err := sql.Open("postgres", dbinfo)
checkErr(err)
defer db.Close()
fmt.Println("\n#Inserting values")
var lastInsertId int
err = db.QueryRow("INSERT INTO userinfo(username,departname,created) VALUES($1,$2,$3) returning uid;",
"santo", "Tecnología", "2016-09-11").Scan(&lastInsertId)
checkErr(err)
fmt.Println("last inserted id =", lastInsertId)
fmt.Println("\n\n\n")
/***************************************************************************************/
//UPDATE
/***************************************************************************************/
fmt.Println("# Updating")
stmt, err := db.Prepare("UPDATE userinfo SET username=$1 WHERE uid=$2")
checkErr(err)
res, err := stmt.Exec("astaxieupdate", lastInsertId)
checkErr(err)
affect, err := res.RowsAffected()
checkErr(err)
fmt.Println(affect, "rows changed")
/***************************************************************************************/
//QUERY
/***************************************************************************************/
fmt.Println("# Querying")
rows, err := db.Query("SELECT * FROM userinfo")
checkErr(err)
for rows.Next() {
var uid int
var username string
var department string
var created time.Time
err = rows.Scan(&uid, &username, &department, &created)
checkErr(err)
//fmt.Println("uid | username | department | created ")
fmt.Printf("%3v | %8v | %6v | %6v\n", uid, username, department, created)
}
/***************************************************************************************/
//DELETE
/***************************************************************************************/
/*
fmt.Println("# Deleting")
stmt, err = db.Prepare("delete from userinfo where uid=$1")
checkErr(err)
res, err = stmt.Exec(lastInsertId)
checkErr(err)
affect, err = res.RowsAffected()
checkErr(err)
fmt.Println(affect, "rows changed")
*/
/***************************************************************************************/
}
func checkErr(err error) {
if err != nil {
panic(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment