1. 簡介
我們用golang做odbc驅動開發的任務並不多,隔段時間可能會來一個。每次開發會忘記如何配置資料來源和對應的資料來源連結引數配置。這裡做一個整理。
1.1 ODBC和JDBC
ODBC(Open Database Connectivity)是一組對資料庫訪問的標準API,其最大的優點是以統一的方式處理所有的資料庫。
JDBC(Java Database Connectivity)是Java與資料庫的介面規範,允許Java程式傳送SQL指令並處理結果。比較常見JdbcTemplate
1.2 ODBC配置工具
開啟控制皮膚找到管理工具,當前目錄有兩個ODBC的配置工具。分別是:ODBC Data Sources (32-bit)、ODBC 資料來源(64 位)。顧名思義一個是32位,一個是64位。在配置ACCESS資料來源時需要選擇32位。
我們也可以直接在系統目錄下找到對應的可執行檔案。
1)32位:%windir%\syswow64\odbcad32.exe
2)64位:%windir%\system32\odbcad32.exe
題外話:syswow64 目錄存放的是32位的程式,system32目錄存放的是64位的程式,在註冊dll的時候需要注意下。ITDragon 在接觸驅動開發之前一直都弄反了。這篇文章做了通俗易懂地解釋https://www.cnblogs.com/hbccdf/p/dllchecktoolandsyswow64.html
1.3 ODBC 資料來源連線配置
網上收集整理,不保證正確性,僅供參考。
資料庫 | 連線引數 |
---|---|
MySQL | driver={mysql};database=資料庫;uid=賬號;pwd=密碼; |
MSSQL Server | driver={sql server};server=伺服器;database=資料庫;uid=ITDragon;pwd=密碼; |
Access | driver={microsoft access driver (*.mdb)};dbq=mdb檔案全路徑;uid=ITDragon;pwd=密碼; |
SQLite | driver={SQLite3 ODBC Driver};database=db檔案全路徑 |
PostgreSQL | driver={PostgreSQL ANSI};server=伺服器;uid=賬號;pwd=密碼;database=資料庫; |
DBase | driver={microsoft dbase driver (*.dbf)};driverid=277;dbq=dbf檔案全路徑; |
Oracle | driver={microsoft odbc for oracle};server=伺服器;uid=ITDragon;pwd=密碼; |
MS text | driver={microsoft text driver (* .txt; *.csv)};dbq=檔案全路徑;extensions=asc,csv,tab,txt;PersistSecurityInfo=false; |
Visual Foxpro | driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No; |
2. MySQL 資料來源配置
2.1 配置步驟
第一步:雙擊ODBC 資料來源(64 位),可以選擇使用者DSN(系統只對當前使用者生效),也可以選擇系統DSN(能登入當前系統的使用者都生效)
第二步:點選新增,選擇事先安裝好的MySQL ODBC xx Driver 驅動後點選完成。注意不同版本之間對某些sql語法的支援略有不同(之前吃過這個虧,我的環境有問題,客戶環境沒問題???)。
第三步:完善基本連結資訊後點選Test,提示連結成功後點選OK完成配置。
2.2 連結引數配置
因為ODBC驅動配置已經將資料庫的連線地址、賬號、密碼、資料庫都已經配置完成,連線引數只需要指定驅動名稱即可:DSN=ITDragon_MySQL
Golang虛擬碼:
import (
"database/sql"
_ "github.com/alexbrainman/odbc"
)
db, err := sql.Open("odbc", "DSN=ITDragon_MySQL")
if err != nil {
panic(err)
}
defer db.Close()
3. SQLServer 資料來源配置
3.1 配置步驟
第一步:雙擊ODBC 資料來源(64 位),可以選擇使用者DSN(系統只對當前使用者生效),也可以選擇系統DSN(能登入當前系統的使用者都生效)
第二步:點選新增,選擇SQL Server。這一項我ITDragon 並沒有手動安裝,應該是安裝SQL Server資料庫的時候自動安裝上去的。
第三步:鍵盤輸入需要連線的SQLServer伺服器,如果是本機,就輸入計算機名。如果是遠端主機就需要輸入IP,Port 。不要點選下拉框,會卡死。
第四步:選擇SQL Server驗證方式
第五步:選擇預設資料庫,也可以在寫sql語句時將表名的全路徑寫全(我ITDragon 習慣用寫全)
第六步:可以考慮修改SQL Server的系統訊息語言,資料的加密,執行字元資料翻譯,修改日誌儲存路徑等。也可以預設。
第七步:點選完成,彈出“按照以下配置建立新的ODBC資料來源”,點選測試資料來源,提示測試成功。點選確定完成建立。
3.2 連結引數配置
Golang虛擬碼:
import (
"database/sql"
_ "github.com/alexbrainman/odbc"
)
db, err := sql.Open("odbc", "driver={sql server};server=DESKTOP-HKC2IA3;DSN=ODBCName;uid=xxx;pwd=xxx;")
if err != nil {
panic(err)
}
defer db.Close()
4. ACCESS 資料來源配置
4.1 配置步驟
第一步:雙擊ODBC Data Sources (32-bit),而不是64位。可以選擇使用者DSN(系統只對當前使用者生效),也可以選擇系統DSN(能登入當前系統的使用者都生效)
第二步:選擇Microsoft Access Driver (*.mdb)。點選資料庫下發的選擇按照,選擇mdb檔案,點選確定完成配置。
4.2 連結引數配置
我們其實可以不用配置Access的資料來源,直接用DBQ指定mdb的檔案路徑,再用pwd輸入密碼訪問。
Golang虛擬碼:
import (
"database/sql"
_ "github.com/alexbrainman/odbc"
)
db, err := sql.Open("odbc", "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=全路徑.MDB;pwd=xx;")
if err != nil {
panic(err)
}
defer db.Close()