Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DB(又名Derby)不';t从备份中恢复数据库_Java_Sql_Derby_Database Restore_Javadb - Fatal编程技术网

Java DB(又名Derby)不';t从备份中恢复数据库

Java DB(又名Derby)不';t从备份中恢复数据库,java,sql,derby,database-restore,javadb,Java,Sql,Derby,Database Restore,Javadb,正如我从中所读到的,我试图使用以下代码恢复我的嵌入式Java DB(也称为Derby)数据库: private void restoreBackup() { FileDialog fileDialog = new FileDialog(new Frame(), "Choose A Backup Folder)", FileDialog.LOAD); //fileDialog.setDirectory("::myVolume:"); fileDialog.setVisibl

正如我从中所读到的,我试图使用以下代码恢复我的嵌入式Java DB(也称为Derby)数据库:

private void restoreBackup() {
    FileDialog fileDialog = new FileDialog(new Frame(), "Choose A Backup Folder)", FileDialog.LOAD);
    //fileDialog.setDirectory("::myVolume:");
    fileDialog.setVisible(true);
    String fileName = fileDialog.getDirectory();

    if (fileDialog.getDirectory() != null) {
        fileName = fileName.substring(0, fileName.lastIndexOf(System.getProperty("file.separator")));
        try {
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
            Properties connectionProps = new Properties();
            connectionProps.put("restoreFrom", fileName);
            connectionProps.put("user", "pass");
            connectionProps.put("password", "databaseName");
            conn = DriverManager.getConnection(dbURL, connectionProps);
            conn.commit();
            System.out.println("Database Restored");
        } catch (InstantiationException ex) {
            Logger.getLogger(ReseachAssistantUI.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(ReseachAssistantUI.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ReseachAssistantUI.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(ReseachAssistantUI.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

但是,即使没有抛出异常,也不会发生任何事情。我在这里做错了什么吗?

我遇到了同样的问题,我解决了它,首先关闭数据库,然后恢复数据库。 例如:

        String nsURL1 = "jdbc:derby:*PATH*;shutdown=true";
        String nsURL2 = "jdbc:derby:*PATH*;restoreFrom="+ fileName;
        connectionProps.setProperty("user", "pass");
        connectionProps.setProperty("password", "databaseName");

        DriverManager.getConnection(nsURL1, props);
        dbConnection = DriverManager.getConnection(nsURL2, props);

使用try-catch

可以尝试使用完整路径代替文件名吗?您是否以您发布的apache手册中指定的格式获取文件名和路径?@happybuddha我刚刚获取了,但仍然是一样的。这是我得到的文件名
“C:\Users\Igor\Desktop\backupdate2013-03-12@01-22-19\Research Assistant Data V0.26“
实际上是一个文件夹。嗯。。。我又看了一遍手册,它说:“…连接URL应该是:jdbc:derby:toursDB;createFrom=c:\mybackups\sample'您可以将您的dbURL更改为上面的样子吗?当然是restoreFrom而不是createFrom>它显示了一个错误。它显示了什么错误?另外,您是否尝试在每一行代码处放置调试点并进行检查?以下是Bryan早期文章之一的更多文档:WorksforMe。但请注意:如果备份是通过调用SYSCS\u UTIL.SYSCS\u backup\u DATABASE(“BACKUPPATH”)过程进行的,则必须使用
restoreFrom=BACKUPPATH/DATABASENAME
进行还原。