Windows上命令列實現執行時新增ODBC資料來源-odbcconf命令的使
最近做的一個專案要求程式可以自動在windows上新增一個ODBC資料來源,發現可以用Windows API中的SQLConfigDataSource函式可以實現,在檢視MSDN文件時,這個函式等同於odbcconf.exe命令列工具。最好是使用SQLConfigDataSource自己實現一個application,用來建立ODBC資料來源,但是使用odbcconf.exe命令列工具,然後通過java來呼叫也能實現該功能,於是就使用了它。
該命令在msdn上可以檢視到詳細的引數的含義,msdn的連結:
主要用到是 /A {action} 這個引數,action可以有種選項,檢視msdn一看便知,最主要的是使用CONFIGSYSDSN,就是建立一個系統DSN,這個命令的格式為
Java程式碼
- CONFIGSYSDSN driver_name DSN=name|attributes
由此看出, 我們知道建立一個數據源的時候,需要指定用什麼driver,是SQL Server還是Oracle還是其他什麼資料庫型別,它是通過指定driver的名稱實現的。建立資料來源時還需要要填入資料庫所在的機器,資料庫的名稱,使用者名稱,密碼等資訊,不同型別的資料庫驅動這些資訊是不一樣的,這些資訊怎樣通過命令引數新增上去呢,使用DSN=name |attributes這樣一個字串的方式,把資料庫的機器名,使用者名稱,密碼等資訊作為attributes放置到DSN=name後面,不同屬性用豎線分隔,DSN=name這個是必須有的,就是你的DSN的名字是什麼,然後後面就是那些屬性。
以我專案中的設定為例子,driver是Virtual View Manager 8.4,DSN需要設定,主機名,使用者名稱,密碼,資料庫名,域名,目錄名等,於是這些資訊組成了字串DSN=vvmfilenetp8;UID=admin;PWD=admin;DOMAIN=cognos;HOST=localhost;PORT=9401;DATASOURCE=fn;CATALOG=catalog;
整個命令列看起來如下
Java程式碼
- odbcconf.exe /A {CONFIGSYSDSN "Virtual View Manager 8.4" "DSN=vvmtest;UID=admin;PWD=admin;DOMAIN=cognos;HOST=localhost;PORT=9401;DATASOURCE=db;CATALOG=catalog;"}
當然不同資料庫型別的DSN的屬性都是不同的,具體是什麼格式,需要自己去檢視。
執行完這一命令,再去windows的ODBC資料來源那裡檢視,名稱為vvmtest的系統DSN就新增上去了。
當然你也可以使用INSTALLDRIVER引數先安裝driver,實現安裝driver,然後新增資料來源都在程式中自動完成。具體如何使用可以檢視msdn文件的說明。
以上就算是拋磚引玉,該命令還有許多別的引數,可以實現其他功能。具體可以檢視msdn。
通過以上的實踐,作者感覺檢視文件,看懂文件非常重要,它能幫助你自己解決很多問題。