PHP
·
发表于 5年以前
·
阅读量:8280
PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。
package main
import _ "github.com/bmizerany/pq"
import "database/sql"
import "time"
import "fmt"
func main() {
conf := "dbname=gobyexample sslmode=disable"
db, openErr := sql.Open("postgres", conf)
if openErr != nil {
panic(openErr)
}
defer db.Close()
fmt.Println(db)
createRep, createErr := db.Exec(
`CREATE TABLE items
(a int, b float, c boolean,
d text, e timestamp with time zone)`)
if createErr != nil {
panic(createErr)
}
fmt.Println(createRep)
insertRep, insertErr := db.Exec(
`INSERT INTO items VALUES
(1, 2.0, false,
'string', '2000-01-01T01:02:03Z')`)
if insertErr != nil {
panic(insertErr)
}
fmt.Println(insertRep)
timeFmt := time.RFC3339
t1, _ := time.Parse(timeFmt, "2000-04-08T03:02:01Z")
t2, _ := time.Parse(timeFmt, "2007-03-02T10:15:45Z")
minsertRep, minsertErr := db.Exec(
`Insert INTO items VALUES
($1, $2, $3, $4, $5),
($6, $7, $8, $9, $10)`,
3, 7.0, true, "more", t1,
5, 1.0, false, "less", t2)
if minsertErr != nil {
panic(minsertErr)
}
num, _ := minsertRep.RowsAffected()
fmt.Println(num)
rows, selectErr := db.Query("SELECT * FROM items")
if selectErr != nil {
panic(selectErr)
}
defer rows.Close()
for rows.Next() {
var r1 int
var r2 float64
var r3 bool
var r4 string
var r5 time.Time
rows.Scan(&r1, &r2, &r3, &r4, &r5)
fmt.Println(r1, r2, r3, r4, r5)
}
rowsErr := rows.Err()
if rowsErr != nil {
panic(rowsErr)
}
dropRep, dropErr := db.Exec("DROP TABLE items")
if dropErr != nil {
panic(dropErr)
}
fmt.Println(dropRep)
}