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()
5 Oracle 數據源配置
5.1 配置步驟
第一步:下載 instantclient-basic 和 instantclient-odbc。下載地址已經傳到百度雲了。
鏈接:https://pan.baidu.com/s/1zysh0tAQyzkw9aNQtzaEnw
提取碼:2e61
第二步:將兩個zip包都解壓到當前目錄下。並創建network/admin 目錄(不知道有沒有用),看其他文章還需要修改tnsnames.ora。但是我並沒有這個文件也可以成功。
第三步:配置環境變量,右鍵以管理員運行odbc_install.exe程序。
path | xxx\instantclient_11_2 |
---|---|
ORACLE_HOME | xxx\instantclient_11_ |
TNS_ADMIN | xxx\instantclient_11_1\network\admin |
第四步:打開計算機管理---數據源---找到Oracle in instantclient_11_2
第五步:配置數據源。其他默認,只需要配置 TNS Service Name : IP+PORT/SID, sid一般是數據庫名稱。最后測試鏈接。
5.2 鏈接參數配置
import (
"database/sql"
_ "github.com/alexbrainman/odbc"
)
db, err := sql.Open("odbc", "DSN=ITDragon;uid=xxx;pwd=xxx;database=xxx")
if err != nil {
panic(err)
}
defer db.Close()