目前我正在开发一个 java swing 应用程序,我想将其用作 MS Access 数据库上的 CRUD 操作的 GUI。目前,团队中将使用此应用程序的每个人都会更新共享服务器上的电子表格。他们希望切换到更适合其目的的用户界面,并将电子表格转换为数据库。
我计划将可执行 jar 和 ms access 数据库文件放在共享服务器上。这是 Access jar 的地方。
我不希望用户必须搞乱 ODBC 设置。有图书馆可以帮助解决这个问题吗?
更新:Shailendrasingh Patil 下面的建议最适合我。这花了我一些研究,而且设置有点困惑。但我最终让一切都按照我希望的方式进行。我使用 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();
}
}
对于错误的缩进,我深表歉意。
最佳答案
您应该使用 UCanAccess 驱动程序连接到 MS-Access。它是纯粹基于 JDBC 的,您不需要 ODBC 驱动程序。 引用示例here
关于java - 将java swing应用程序连接到共享服务器上的ms access db的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45122245/