gpt4 book ai didi

java - 如何将 UCanAccess 连接到使用数据库密码加密的 Access 数据库?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:47 25 4
gpt4 key购买 nike

我开发了一个带有 Access 数据库的 Java 应用程序(字典)来存储字典中的单词,我正准备分发它。我想用密码加密我的数据库,以防止人们 Access 我的话。当我设置密码时,Java 代码显示此异常

net.ucanaccess.jdbc.UcanaccessSQLException: Decoding not supported.  Please choose a CodecProvider which supports reading the current database encoding.
at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:247)

这是使用密码加密我的数据库之前的连接代码....

String s1="jdbc:ucanaccess://";
String user="";
String pass="";
String s4="words.accdb";

public void connectToDB(){
//database connection
try {
conn = DriverManager.getConnection(s1+s4,user,pass);
} catch (SQLException e) {
e.printStackTrace();
}
//end of database connection
}

这里是密码加密后的代码例如12345...

String s1="jdbc:ucanaccess://";
String user="";
String pass="12345";
String s4="words.accdb";

public void connectToDB(){
//database connection
try {
conn = DriverManager.getConnection(s1+s4,user,pass);
} catch (SQLException e) {
e.printStackTrace();
}
//end of database connection
}

最佳答案

如何将UCanAccess连接到使用数据库密码加密的Access数据库的步骤

第 1 步:
将这两个包添加到您的项目中(jackcess-encrypt.jar、bcprov-ext-jdk15on-152)

您可以从以下链接下载这两个包:

Jackcess Encrypt
Bouncy Castle

第 2 步:
您必须将此类添加到您的项目文件夹中

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

public class CryptCodecOpener implements JackcessOpenerInterface {
@Override
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();
}
//Notice that the parameter setting autosync =true is recommended with UCanAccess for performance reasons.
//UCanAccess flushes the updates to disk at transaction end.
//For more details about autosync parameter (and related tradeoff), see the Jackcess documentation.
}

像这样

enter image description here

第三步:
使用下面的连接代码

public void connectToDB(){
try {
conn = DriverManager.getConnection("jdbc:ucanaccess://words.accdb;jackcessOpener=CryptCodecOpener", "user", "pass");
} catch (SQLException ex) {
ex.printStackTrace();
}
}


您还可以观看此视频... https://www.youtube.com/watch?v=TT6MgBBkRSE

关于java - 如何将 UCanAccess 连接到使用数据库密码加密的 Access 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31429939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com