47.筆記go——go連線oracle
在連線oracle資料庫之前我們先來看下乙個概念oci。
oracle呼叫介面(oracle call inte***ce簡稱oci)提供了一組可對oracle資料庫進行訪問的界面子例程(函式),通過在第三代程式語言(如c語言)中進行呼叫可達到訪問oracle資料庫的目的。
放到開發路徑下,資料夾go-oci8-master
將go-oci8-master\windows (絕對路徑,此處使用相對路徑為例)加入到path 環境變數。
設定環境變數pkg_config_path
為go-oci8-master\windows(絕對路徑,此處使用相對路徑為例)
最新的版本是12.1.0.1.0
安裝到:c:/instantclient_12_1
修改oci8.pc檔案中如下:
prefix=c:/instantclient_12_1
exec_prefix=c:/instantclient_12_1
libdir=$
includedir=$/sdk/include/
name: oci
description: oracle database engine
version: 12.1
libs: -l$ -loci
libs.private:
cflags: -i$
如果報錯:
# go-oci8-master
go-oci8-master\oci8.go:116: cannot convert(**c.struct_ociserver)(unsafe.pointer(&conn.svc)) (type**c.struct_ociserver) to type **c.struct_ocisvcctx
exit status 2
則需要修改\go-oci8-master\oci8.go檔案
有4個地方需要修改
1、119行
2、136行
3、263行
4、383行
或者直接替換ociserver為ocisvcctx。
package main
import (
"database/sql"
_"go-oci8-master"
"log"
"os" )
func main()
rows,err := db.query("select 3.14, 'foo' from dual")
iferr != nil
deferdb.close()
forrows.next()
rows.close()
// 先刪表
,再建表
db.exec("droptable sdata")
db.exec("createtable sdata(name varchar2(256))")
db.exec("insertinto sdata values('
中文')")
db.exec("insertinto sdata values('1234567890abcabc!@#$%^&*()_+')")
rows,err = db.query("select * from sdata")
iferr != nil
forrows.next()
rows.close() }
2016/07/1011:09:51 hello.go:14: oracle driver example
2016/07/1011:09:51 hello.go:33: 3.14 foo
2016/07/1011:09:52 hello.go:52: name = 中文, len=6
2016/07/1011:09:52 hello.go:52: name = 1234567890abcabc!@#$%^&*()_+, len=28
完畢。
教父3 筆記
教父3是一部很矯情的 原因在於教父3就是一部斬草不除根,然後還亮將禍患留在自己身邊,首領貼心照顧偏愛這個禍害,禍害長大了開始秘密禍害這個家族,然後首領還是不忍心處理掉這個禍害,忠心耿耿的手下被殺才布局讓手下去除掉禍害!大部分時間講述好萊塢的各種齷齪和骯髒,我猜想國內大部分是看電影過來的,如果以閱讀 ...
3 21 筆記 心得
課堂筆記 1函式內,區域性作用域 函式外,全域性作用域 2.this,指向誰,具體看誰呼叫這個函式 3.localstorage.setitem key,value 用於將key value鍵值對的方式插入localstorage中。4.localstorage.getitem key 讀取key的...
科目三筆記
1 起步 1左燈,喇叭3秒 2鬆手剎 3腳踩離合器和腳剎,掛一檔 先手剎,後檔位 4起步 問題 在轉彎時,加油掛2擋以及 3擋 還是轉彎過後直行,加油掛擋呢?2 左轉 右 速度在20碼上 3 加減檔 3 2 3 4 3 問題 1掛4檔後,加油到 38碼?2什麼時候從4擋掛到 3擋,檔位切換要等多久?...