2011-03-20 20 views
0

我是Java應用程序編程的初學者。在java應用程序中使用數據庫

我已經用Java創建了一個數據庫應用程序。我使用帶有JDBC-ODBC驅動程序的MS訪問數據庫。我的應用程序來創建連接代碼如下:

private void connection() { 

    try { 
     String driverurl = "jdbc:odbc:dharti_data"; 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     con = DriverManager.getConnection(driverurl,"",""); 
    } catch (SQLException e) { 
     JOptionPane.showMessageDialog(frm,e.getSQLState(),"Database Access Error",JOptionPane.ERROR_MESSAGE); 
    } catch (Exception e) {   
     JOptionPane.showMessageDialog(null,e.getMessage(),"Database Access Error",JOptionPane.ERROR_MESSAGE); 
    } 
} 

此代碼的工作完美,但是這個代碼使用了我的控制面板 - >管理工具>數據源(ODBC)>系統DSN>添加數據源中聲明一個數據源名稱,與Microsoft Access驅動程序(* .mdb)。

但是,當我在另一臺PC上運行該應用程序時,它無法運行,而是它會生成數據庫錯誤。

我知道我可以在數據源(ODBC)>系統DSN中聲明一個驅動程序,然後它將運行。但我不想在每臺運行我的應用程序的機器上執行此操作。我的應用程序應該能夠自動獲取數據庫連接。我如何讓我的應用程序不需要數據源名稱?

回答

1
String filename = "C:/Lab/northwind.mdb"; // this the path to mdb file 
    String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="; 
    database+= filename.trim() + ";DriverID=22;READONLY=true}"; // add on to the end 
    // now we can get the connection from the DriverManager 
    Connection con = DriverManager.getConnection(database ,"",""); 
+0

謝謝..但另一個系統到另一個目錄。所以...... – Dugs 2011-03-20 11:02:35

0

林不知道如果我得到這個,但你是否與您的應用程序一起運輸jdbc驅動程序?它必須位於您的類路徑中,並且需要與您的應用程序一起部署。

0

你將不得不以編程方式修改這些註冊表部分:

HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBC.INI
HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBC.INI \ ODBC

Ice Engineering提供了一個公共領域的API,允許你這樣做。除了jar之外,它還有一個DLL,您必須隨應用程序一起提供。這是相當直接的,並會工作。

爲了更好地瞭解您需要做什麼,請在安裝任何內容前使用regedit查看值,然後手動安裝ODBC數據庫,最後將新值與舊值進行比較。

0

我用sun.jdbc.odbc.JdbcOdbcDriver連接到MS Access數據庫。將它放在與類文件相同的目錄中,它應該可以工作。儘管它應該已經安裝在Java SDK中。

這是我剛纔做的練習程序的一個例子。

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 

System.out.println("Driver loaded"); 

// Establish a connection 
Connection connection = DriverManager.getConnection 
("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=(MS ACCESS DATABASE DIRECTORY)"); 

System.out.println("Database connected"); 

// Create a statement 
Statement statement = connection.createStatement(); 

// Execute a statement 
ResultSet resultSet = statement.executeQuery 
    ("select f_name, l_name from Test where f_name = 'Luke'"); // For example 

// Iterate through the result and print the results 
while (resultSet.next()) 
    System.out.println(resultSet.getString(1) + "\t" + resultSet.getString(2)); 
相關問題