4

辞書の単語を格納するための Access データベースを備えた Java アプリケーション (辞書) を開発し、それを配布する準備をしています。データベースをパスワードで暗号化して、他の人が私の言葉にアクセスできないようにしたいと考えています。パスワードを設定すると、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
    }
4

4 に答える 4

0

UCanaccess は、依存関係注入パターンによる暗号化をサポートしています。

-jackcess-encrypt と関連するすべての依存関係をプロジェクトに追加する必要があります

net.ucanaccess.jdbc.JackcessOpenerInterface-ucanaccess Web サイトで提案されているように、を実装するクラスをコーディングする必要があります。

-上記のクラスの名前を jdbc url に渡す必要があります。実装クラスcom.pippo.Bingo に名前を付けた場合は、次の方法で jdbc url を作成する必要があります。

DriverManager.getConnection("jdbc:ucanaccess://c:/db/your_db_name.mdb;jackcessOpener=com.pippo.Bingo", "sa", pwd);
于 2015-07-16T08:48:59.943 に答える
-2

jdbc ドライバー (s1) へのリンクが無効のようです。

このサイトからグーグル検索中に見つけたパターンを見てください

 String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\IJTS EXAMPLES\\Database11.accdb;PWD=1234";

これはサイトからのサンプルです

private void initializeConnection()
{

Connection con ;
try
{

// Load Class Definition for Database Driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

// set this to a MS Access DB you have on your machine
String curDir = System.getProperty("user.dir");
String filename = curDir +"/test.mdb";

String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\\test.mdb;READONLY=true";

// Get connection from the DriverManager
con = DriverManager.getConnection( database,"Admin","test" );


} catch (Exception e) {

System.out.println("Database Connection Problem");

}

}

部分を資格情報に置き換えて文字列を変更する必要があることに注意してください

于 2015-07-15T12:26:50.277 に答える