0

私はデータベース関連のプロジェクトに取り組んでおり、次の場所に MS-Access データベースがあります。

D:\My Documents\Database.accdb

したがって、MS-Access を実行するために次のコマンドを使用します。

cmd /c start MSACCESS D:\My Documents\database.accdb

Java では:

view.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent E) {
        String[] command = {"cmd", "/c", "start MSACCESS D:\\My Documents\\Database.accdb"}
        Runtime.getRuntime().exec(command);
    }
});

Microsoft Access はすぐに起動しますが、次のエラーがスローされます。

「Microsoft Office Access の起動に使用したコマンド ラインに、Micosoft Access が認識しないオプションが含まれています」

その後:

「データベース ファイル 'D:\My.mdb' が見つかりません」

したがって、「My Documents」のスペースを認識せず、「My」で切り捨てられると想定したため、NTFS 8.3 に相当する D:\MYDOCU~1\Database.accdb を試して、次をスローします。

「データベース ファイル 'D:\MYDOCU~1\Database.accdb' が見つかりません」

何が悪いのか本当に分からない

4

2 に答える 2

1

「D:\My Documents\Database.accdb」にはスペースが含まれており、追加パラメータとして扱われています (したがって{"cmd", "/c", "start", "MSACCESS", "D:\\My", "Documents\\Database.accdb"}、呼び出し元のプログラムにお願いします)

次のようなものを使用します

String[] command = {"cmd", "/c", "start", "MSACCESS", "D:\\My Documents\\Database.accdb"};

代わりは...

アップデート

パス名を手動で「短縮」しようとすることは非常に危険であり、お勧めできません。このルートに進む必要がある場合は、OS へのネイティブ呼び出しを利用して、名前を短縮する方法を伝える必要があります。そうすれば、あなたと OS の両方が、同じことについて話していることがわかります。

追加

また、コマンドプロンプトからコマンドを実行して、機能することを確認してください;)

于 2012-10-16T05:53:34.050 に答える
0

代わりにこれを試してください:

String[] command = {"cmd", "/c", "start \"MSACCESS D:\\My Documents\\Database.accdb\""}

PS: あなたのプロジェクトについてはわかりませんが、データベースで何をしたいかによっては、代わりに JDBC 経由で「通常の」SQL データベースとして開くのが理にかなっています。接続文字列に問題がある場合は、別の質問を投稿してください。

于 2012-10-16T06:00:04.690 に答える