Created
September 12, 2016 18:04
-
-
Save hectorgool/e09389db4f050395a7b5ac25268078a1 to your computer and use it in GitHub Desktop.
CRUD postgreSQL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| 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