go连接达梦数据库
DM 驅(qū)動包的配置
1. 安裝 DM 驅(qū)動包
將提供的 DM 驅(qū)動包放在 GOPATH 的 src 目錄下。驅(qū)動包位于 dmdbms/drivers/go/dm-go-driver.zip 解壓到 GPPATH 安裝路徑的 src 下,如圖所示:
2. 安裝依賴包
所需 Go 依賴包有兩個,text 和 snappy,從 Git 上把依賴包 clone 到本地,桌面右鍵【Git Bash Here】打開 Git 命令行窗口,依次下載 text 和 snappy 依賴。
git clone https://github.com/golang/text.git D:/goDev/srcc/golang.org/x/text git clone https://github.com/golang/snappy D:/goDev/src/github.com/golang/snappy3.go代碼
//Sql語句 CREATE TABLE "SYSDBA"."DPI_DEMO" ( "C1" INT, "C2" CHAR(20), "C3" VARCHAR(50), "C4" NUMERIC(7,3), "C5" TIMESTAMP(5), "C6" CLOB, "C7" BLOB) STORAGE(ON "MAIN", CLUSTERBTR) ;/*該例程實現(xiàn)插入數(shù)據(jù),修改數(shù)據(jù),刪除數(shù)據(jù),數(shù)據(jù)查詢等基本操作。*/ package main // 引入相關(guān)包 import ("database/sql"_ "dm""fmt""time" ) var db *sql.DB var err error func main() {driverName := "dm"dataSourceName := "dm://SYSDBA:SYSDBA@localhost:5236"if db, err = connect(driverName, dataSourceName); err != nil {fmt.Println(err)return}if err = insertTable(); err != nil {fmt.Println(err)return}if err = updateTable(); err != nil {fmt.Println(err)return}if err = queryTable(); err != nil {fmt.Println(err)return}if err = deleteTable(); err != nil {fmt.Println(err)return}if err = disconnect(); err != nil {fmt.Println(err)return} }func connect(driverName string, dataSourceName string) (*sql.DB, error) {var db *sql.DBvar err errorif db, err = sql.Open(driverName, dataSourceName); err != nil {return nil, err}if err = db.Ping(); err != nil {return nil, err}fmt.Printf("connect to \"%s\" succeed.\n", dataSourceName)return db, nil }func insertTable() error {var sql = `insert into "SYSDBA"."DPI_DEMO"("C1", "C2", "C3", "C4", "C5") VALUES(:1,:2,:3,:4,:5);`_, err = db.Exec(sql, "4", "123aaa", "中華書局1","0.123", time.Now())if err != nil {return err}fmt.Println("insertTable succeed")return nil }func updateTable() error {var sql = `update "SYSDBA"."DPI_DEMO" set "C4" = :1 where c1 = :2;`if _, err := db.Exec(sql, 222.125,4); err != nil {return err}fmt.Println("updateTable succeed")return nil }func queryTable() error {var C1 intvar C2 stringvar C3 stringvar C4 stringvar C5 stringvar sql = `select "C1","C2","C3","C4","C5" from "SYSDBA"."DPI_DEMO";`rows, err := db.Query(sql)if err != nil {return err}defer rows.Close()fmt.Println("queryTable results:")for rows.Next() {if err = rows.Scan(&C1, &C2, &C3, &C4, &C5); err != nil {return err}fmt.Printf("%v %v %v %v %v\n", C1, C2, C3, C4, C5)}return nil }func deleteTable() error {var sql = `delete from "SYSDBA"."DPI_DEMO" where c1 = :1;`if _, err := db.Exec(sql,4); err != nil {return err}fmt.Println("deleteTable succeed")return nil } /* 關(guān)閉數(shù)據(jù)庫連接 */ func disconnect() error {if err := db.Close(); err != nil {fmt.Printf("db close failed: %s.\n", err)return err}fmt.Println("disconnect succeed")return nil }達夢支持
有任何問題請到技術(shù)社區(qū)反饋。
24小時免費服務(wù)熱線:400 991 6599
達夢技術(shù)社區(qū):https://eco.dameng.com
總結(jié)
- 上一篇: Python对象基础
- 下一篇: linux cmake编译源码,linu