2017-07-15 58 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

相关问题