專案研究 自動安裝並配置ODBC的思路與實現

2022-05-02 20:57:09 字數 2206 閱讀 5310

一、如何自動註冊odbc資料來源

其實都是用到乙個函式:sqlconfigdatasource。

這裡舉兩個有代表性的例子:

// 自動註冊foxpro資料來源

bool bobdc = sqlconfigdatasource(

null,

odbc_add_dsn,

"microsoft visual foxpro driver",

"dsn = sk\0"

"sourcedb=d:\\\0"

"sourcetype=dbf"

);if (!bobdc)

sqlconfigdatasource總共有四個引數,第乙個一般都是null,第二個的引數代表你要進行的操作,可選引數如下:

odbc_add_dsn: 增加_個新資料來源

odbc_conhg_dsn: 配置(修改)乙個已經存在的資料來源

odbc_remove_dsn: 刪除乙個已經存在的資料來源

odbc_add_sys_dsn: 增加乙個新的系統資料來源

odbc_config_sys_dsn: 更改乙個已經存在的系統資料來源

odbc_remove_sys_dsn: 刪除乙個已經存在的系統資料來源

第三個引數為資料來源驅動的名稱,可以在odbc資料管理器中檢視(或者登錄檔)。第四個引數需要注意,dsn、sourcedb、sourcetype都是在登錄檔中查到的。怎麼查呢?

你可以手動配置乙個資料來源,然後在regedit裡面hkey_current_user –> software –> odbc –> odbc.ini

下中查詢剛才手動配置的資料來源,點選後右側出現的就是可以配置的資訊項了。例如我的是這樣的:

還有乙個需要注意的就是各項之間無逗號,每項皆在引號裡,最後記住加\0.(朗朗上口吧)

2、mysql資料來源(這個實在是特殊)

bool cloggingdecodedlg::odbcconfig()

可以觀察到,mysql與之前微軟系列最大的區別在於第四個引數的寫法。注意,結尾必須是分號,否則一定會失效。(這個參考的是mysql官方文件的寫法)

很多網上的朋友在各大論壇裡提問說,為何用微軟派的寫法寫mysql的自動註冊資料來源不好使,原因就在這裡。它們是有點區別滴。再囉嗦一句,上面第四個引數的那些項名稱同理與微軟派,也是在登錄檔中對應出來的。

二、自動安裝odbc驅動的思路

其實odbc驅動的核心在於四個dll檔案:

然後在於登錄檔中的註冊資訊:

上圖里可以看到其註冊資訊所在的路徑,該路徑下其實只填寫了兩個地方,乙個是odbc drivers裡面,乙個是mysql odbc 5.1 driver裡面。主要是後者,如下圖:

填入這三個字段即可。

但我們無需編寫**去往登錄檔中寫(當然這也可以實現),有乙個exe會幫助我們,在正常安裝完成odbc驅動的時候(這裡以mysql為例),安裝路徑下會有上述的四個dll檔案,還會有乙個myodbc-installer.exe,這個可以幫助我們完成登錄檔的寫入操作。

首先,將四個dll檔案copy至system32資料夾下。

然後,cmd命令(win7請用右鍵管理員許可權)進入myodbc-installer.exe所在資料夾。

最後,敲入命令:

myodbc-installer.exe -d -a -n "mysql odbc 5.1 driver" -t "driver=myodbc5.dll;setup=myodbc5s.dll"
如果顯示success: usage count is 1,表示安裝成功。

接下來要實現自動安裝,就是用程式來呼叫以上三個步驟了。

Centos下安裝並配置ODBC連線MySQL

找到一篇英文的關於linux下odbc的安裝和配置,在此根據自己的需要擷取部分記錄一下。安裝並配置odbc odbc聯結器是乙個資料庫抽象層,它可以讓asterisk與廣泛的資料庫進行通訊,而無需開發人員為asterisk需要的每乙個資料庫建立乙個單獨的資料庫連線。這樣可以節省大量的開發工作和 維護...

MFC中自動配置ODBC資料來源

在mfc中自動配置odbc資料來源 但是多次都沒有成功。1.一般來說,實現資料庫到odbc驅動程式管理器的註冊有以下兩種方法 一是程式設計時手工配置odbc資料來源,發布時使用installshield等安裝製作軟體自動配置odbc資料來源 二是考慮用程式替使用者完成這些配置工作,實現的方法有幾種,...

安裝keepalived 並配置

萬能一鍵解決所有可能遇到的所有錯誤 如果是行家 可自行精簡 如果是小白 請複製貼上 yum install curl gcc openssl devel libnl3 devel net snmp devel libnfnetlink devel y makefile configure prefi...