目前正在开发一个java swing应用程序,我希望将其作为MS访问数据库上CRUD操作的GUI。目前,团队中将使用此应用程序的每个人都会在共享服务器上更新电子表格。他们希望切换到更适合其目的的UI,并将电子表格转换为数据库。
我打算在shareserver上放一个可执行jar和ms 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();
}
}
我为糟糕的缩进道歉。