2010-03-24 25 views
1

我想編寫一個Java程序,它可以自動執行ODBC數據源管理員在Windows中執行的工作。Java中的ODBC連接安裝

也就是說,給定一個ODBC連接名稱和硬盤上的數據庫路徑,我希望它創建連接。

我真的不知道從哪裏開始。我看着this,但它表示這是爲C,我不認爲這是非常有用的。如果任何人都可以爲我指出正確的方向,我將不勝感激。

(我知道這個問題是真的含糊不清,但是這是我得到的所有信息。)

+0

我整天都在使用JDBC。我認爲你的問題是一個很好的問題,因爲有時你希望能夠從Java創建一個ODBC DSN而不需要使用ODBC控制面板。原因很簡單:DSN可能尚未存在,並且數據庫的JDBC端口可能沒有正在偵聽。目前,我通過運行.reg文件從批處理文件創建DSN。如果可能的話,用Java進行編程會更好。 – djangofan 2011-06-29 16:06:56

回答

1

您將要考慮使用JDBC

+0

我已經使用了JDBC,但是我的所有使用體驗都是使用MySQL或SQL數據庫,或者使用ODBC連接的數據庫,我已經使用ODBC數據源管理器進行了設置。我可以用它來設置連接而不是數據源管理員嗎? – Jessica 2010-03-24 02:46:11

+0

@Jessica我不這麼認爲。我相信你必須有一個ODBC數據源設置。 – 2010-03-24 04:49:21

1

所有ODBC配置都在Windows註冊表中,或者在Linux中爲odbc.ini(我沒有在其他平臺上使用過ODBC)。首先,您必須使用ODBC管理器創建此類配置,然後檢查配置中保存的內容以及執行相同操作的寫入程序。如果您使用Windows 32位,請檢查註冊表HKEY_LOCAL_MACHINE\SOFTWARE\ODBC。 對於32位應用程序和64位應用程序,Windows 64位具有不同的配置(只需在註冊表中查找odbc.ini字符串)。

我認爲Java是不會更改Windows註冊表中一些最好的語言,但與Java中,你可以創建能夠通過regedit.exe進口.reg文本文件,或者您可以使用其他語言如Python的Win32擴展(主動Python有它默認)。

+0

瞭解問題的加分。不幸的是,我認爲這個人正在尋找一個支持編輯DSN而不是批處理文件解決方案的Java .jar庫。 – djangofan 2011-06-29 16:08:58

3

問題的答案是您不需要註冊的DSN。

以下是使用系統ODBC驅動程序從Java使用ODBC連接(而非JDBC)的示例。除了修改註冊表,以創建一個註冊的DSN,你的選擇是使用一個未註冊的DSN,就像這樣:

Driver=sun.jdbc.odbc.JdbcOdbcDriver 
Source=jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Dir/DB/MyDB.mdb; 

或者,使用SQL Server:

Driver=sun.jdbc.odbc.JdbcOdbcDriver 
Source=jdbc:odbc:Driver={SQL Server};SERVER=127.1;DATABASE=MyDB;UID=sa;PWD=mypass 
0

檢查這一個。 。 Java數據庫連接(JDBC)支持基於ODBC的數據庫並提供獨立的數據庫。

Connection connection = null; 
    try { 
     DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 
     connection = DriverManager.getConnection("connection string", "userName", "password"); 
    } catch (SQLException e) { 


    } 

    return connection; 
0
String driver ="sun.jdbc.odbc.JdbcOdbcDriver" 
String url = "jdbc:odbc:Driver={Microsoft Access Text Driver (*.txt, *.csv)};DBQ=C:/CSVFolder 

query = select * from myfile.csv 
+0

這是如何回答這個問題的?請提供更多的上下文,這是一個脫離上下文的代碼片段。 – 2012-12-30 02:36:26

0

我從來沒有到之前連接到MS SQL服務器。我一直使用DB2或Derby,MYSQL,創建連接的過程都一樣。這是我必須爲SQL Server做的事情。

private final String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; 

Class.forName(driver); 

url="jdbc:odbc:;DRIVER={SQL Server};SERVER="+server+","+port+";DATABASE="+dbName; 
connection = DriverManager.getConnection(url,user,password);