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'”

所以我假设它无法识别“我的文档”处的空格,并且在“我的”处截断,所以我尝试使用它的 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"};

反而...

更新

尝试手动“缩短”路径名非常危险且不明智。如果你需要走这条路,你真的应该利用对操作系统的本机调用来告诉名称应该如何缩短,所以你和操作系统都知道你在说同样的事情

额外的

另外,请尝试从命令提示符运行命令以确保其正常工作;)

于 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 回答