pq接口
獲取驅(qū)動(dòng)
瀚高數(shù)據(jù)庫針對(duì)GO語言的pq驅(qū)動(dòng),以github.com/lib/pq為基礎(chǔ)進(jìn)行安全加固,支持sm3等國密算法。
驅(qū)動(dòng)包名稱:github.com/lib/pq
下載鏈接:https://pan.baidu.com/s/1xuz6uJz0utRgKWecXhpOiA?pwd=o0tj
引入驅(qū)動(dòng)
import ( "database/sql" _ "github.com/lib/pq" )
|
連接到數(shù)據(jù)庫
import ( "database/sql"
_ "github.com/lib/pq" )
func main() { connStr := "host=localhost port=5866 user=sysdba password=xxxxx dbname=highgo" db, err := sql.Open("postgres", connStr) if err != nil { log.Fatal(err) }
age := 21 rows, err := db.Query("SELECT name FROM users WHERE age = $1", age) … }
|
您還可以使用 URL 方式連接到數(shù)據(jù)庫。例如:
connStr := "postgres://user:password@ip/dbname?sslmode=verify-full" db, err := sql.Open("postgres", connStr)
|
支持的連接字符串參數(shù):
dbname
- 要連接到的數(shù)據(jù)庫的名稱。
user
- 登錄身份的用戶。
password
- 用戶的密碼。
host
- 要連接到的主機(jī)。
port
- 要綁定到的端口。
sslmode
- 是否使用 SSL,默認(rèn)值為 require,可選參數(shù)為disable, require, verify-ca, verify-full
。
connect_timeout
- 連接的最長等待時(shí)間(以秒為單位)。零或未指定表示無限期等待。
sslcert
- 證書文件位置。該文件必須包含 PEM 編碼的數(shù)據(jù)。
sslkey
- 密鑰文件位置。該文件必須包含 PEM 編碼的數(shù)據(jù)。
sslrootcert
- 根證書文件的位置。文件必須包含 PEM 編碼數(shù)據(jù)。
請(qǐng)注意,連接參數(shù) client_encoding (它設(shè)置了連接的文本編碼可以設(shè)置,但必須為“UTF8”)。
有關(guān)連接字符串參數(shù)的詳細(xì)信息,請(qǐng)參閱 http://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING。
CURD
package main
import ( "database/sql" "fmt" "log"
_ "github.com/lib/pq" )
const ( host = "192.168.33.186" port = 5866 user = "sysdba" password = "Hello@123" dbname = "highgo" )
func connectDB() *sql.DB { ConnString := "postgres://sysdba:Hello@123@192.168.33.186:5866/highgo?client_encoding=utf8" db, err := sql.Open("postgres", ConnString)
if err != nil { panic(err) }
err = db.Ping() if err != nil { panic(err) } fmt.Println("Successfully connected!") return db }
func insertUser(db *sql.DB) { stmt, err := db.Prepare("insert into sdbo_department(dep_id,dep_name) values($1,$2)") if err != nil { log.Fatal(err) } _, err = stmt.Exec(1, "mgr")
if err != nil { log.Fatal(err) } else { fmt.Println("insert into sdbo_department success!") }
}
func query(db *sql.DB) { var id, name string
rows, err := db.Query(" select * from sdbo_department where dep_id=$1", "1")
if err != nil { fmt.Println(err) } defer rows.Close()
for rows.Next() { err := rows.Scan(&id, &name)
if err != nil { fmt.Println(err) } }
err = rows.Err() if err != nil { fmt.Println(err) }
fmt.Println(id, name) }
func main() { db := connectDB() insertUser(db) query(db)
}
|
運(yùn)行結(jié)果
