2017-07-15 64 views
0

目前我正在開發一個java swing應用程序,我想用它作爲MS訪問數據庫上的CRUD操作的GUI。目前,團隊中將使用此應用程序的每個人都會在共享服務器上更新電子表格。他們想切換到更適合其用途的用戶界面,並將電子表格轉換爲數據庫。將java swing應用程序連接到ms訪問共享服務器上的db的最佳方法?

我打算把一個可執行的JAR和對shareserver的MS Access數據庫文件。這是jar被訪問的地方。

我不希望用戶必須與ODBC設置搞亂。有沒有一個圖書館可以提供幫助?

更新:下面Shailendrasingh帕蒂爾的建議的工作最適合我。這花了我一些研究,設置有點混亂。但是我最終讓所有事情都按照我希望的方式工作。我使用Gradle來引入必要的依賴關係以使用UcanAccess。

以下是從我的DatabaseController類的代碼段:

import javax.swing.*; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.Statement; 

public class DatabaseController { 

    public DatabaseController() {} 

    public void addOperation(String date, String email, String subject, String body) { 
    try{ 
     Connection con = DriverManager.getConnection("jdbc:ucanaccess://C:\\Users\\user\\Desktop\\TestDatabase.accdb;jackcessOpener=CryptCodecOpener","user", "password"); 

     String sql = "INSERT INTO Email (Date_Received, Email_Address, Subject, Message) Values " + 
       "('"+date+"'," + 
       "'"+email+"'," + 
       "'"+subject+"'," + 
       "'"+body+"')"; 

     Statement statement = con.createStatement(); 
     statement.execute(sql); 
    } 
    catch (Exception e) { 
     JOptionPane.showMessageDialog(null, e.getMessage(),"Error", 
       JOptionPane.ERROR_MESSAGE); 
     e.printStackTrace(); 
    } 
} 
} 

,還需要下面的類:

import java.io.File; 
import java.io.IOException; 
import com.healthmarketscience.jackcess.CryptCodecProvider; 
import com.healthmarketscience.jackcess.Database; 
import com.healthmarketscience.jackcess.DatabaseBuilder; 
import net.ucanaccess.jdbc.JackcessOpenerInterface; 

public class CryptCodecOpener implements JackcessOpenerInterface { 
public Database open(File fl,String pwd) throws IOException { 
    DatabaseBuilder dbd =new DatabaseBuilder(fl); 
    dbd.setAutoSync(false); 
    dbd.setCodecProvider(new CryptCodecProvider(pwd)); 
    dbd.setReadOnly(false); 
    return dbd.open(); 
} 
} 

我的壞壓痕道歉。

+0

我會建議你使用一個真正的數據庫(不是MS訪問一個)。 SQL Server或MySQL(或Postgres)。否則,我寧願SQLite。 –

+0

也避免考慮將gui庫連接到數據庫。代碼的兩個部分,一個處理GUI,另一個處理數據庫訪問,應該完全分開,最好是完全不可知的。通過這種方式,您可以對任何需要的持久性框架使用相同的GUI代碼,反之亦然 - 您可以在數據庫代碼中使用任何GUI庫。當然你需要橋接代碼,但是要爭取低耦合和高內聚的代碼。 –

+0

感謝您的輸入。在這種情況下,我將僅限於使用MS Access。可執行jar和訪​​問數據庫文件都將存儲在共享服務器上。該jar不會存儲在用戶本地機器上。我需要避免的是用戶必須進入控制面板管理設置才能調整odbc設置。並非所有用戶都能在他們的機器上訪 – bmck2006

回答

1

您應該使用UCanAccess驅動程序連接到MS-訪問。它是基於純JDBC的,不需要ODBC驅動程序。 參考例子here

+0

謝謝你的建議。這對我有效。我在上面的問題中更新了我的結果! – bmck2006

相關問題