Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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导入Mysql数据库_Java_Mysql - Fatal编程技术网

如何使用Java导入Mysql数据库

如何使用Java导入Mysql数据库,java,mysql,Java,Mysql,我需要使用Java导入我的数据库。我使用的是Wamp和SQL版本5.7.19。当用户单击导出按钮并将.sql文件保存到用户选择的路径时,我正在尝试获取数据库的备份。谁能告诉我是什么问题吗 JFileChooser fc = new JFileChooser(); fc.showOpenDialog(this); String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); try {

我需要使用Java导入我的数据库。我使用的是Wamp和SQL版本5.7.19。当用户单击导出按钮并将.sql文件保存到用户选择的路径时,我正在尝试获取数据库的备份。谁能告诉我是什么问题吗

   JFileChooser fc = new JFileChooser();
   fc.showOpenDialog(this);
   String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());

    try {
        File f = fc.getSelectedFile();
        path = f.getAbsolutePath();
        path = path.replace('\\', '/');
        path = path+"_"+date+ ".sql";
        jTextField2.setText(path);

    } catch (Exception e) {
        e.printStackTrace();
    }
    Process p = null;
    try {

        Runtime runtime = Runtime.getRuntime();
        p = runtime.exec("c:/wamp64/bin/mysql/mysql5.7.19/bin/mysqldump -u root - proot --add-drop-database -B dbName -r "
                    + jTextField2.getText() + path + ".sql");

        int processComplete = p.waitFor();

        if (processComplete == 0) {
            JOptionPane.showMessageDialog(this, "Backup created successfully");
        } else {
            JOptionPane.showMessageDialog(this, "Could not create the backup   !!!");
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

我还没有测试,但我认为你的问题在于:

                + jTextField2.getText() + path + ".sql");
在阅读代码时,文本字段包含路径和
path
变量,因此在命令字符串中可以得到两次。您还获得了
“.sql”
,总共三次,因为您在将其填充到文本字段之前已经将其附加到
路径中。我建议:

                + path);

欢迎来到StackOverflow!从提供的信息来看,我真的看不出这个问题。请详细说明预期的行为以及观察到的行为的差异。逐字引用任何错误消息或stacktrace。因此,您将帮助我们帮助您。我建议您避免使用过时且麻烦的
SimpleDataFormat
类。更好更简单地使用
String date=LocalDate.now(ZoneId.systemDefault()).toString()
。我已更改为p=runtime.exec(“C:/wamp64/bin/mysql/mysql5.7.19/bin/mysqldump-uroot-proot--add drop database-B erp-r”+path);nt processComplete=p.waitFor();如果(processComplete==0){jLabel2.setText(“还原成功”);}或者{jLabel2.setText(“无法创建备份”);}}捕获(异常e){e.printStackTrace();}但它显示我无法创建备份。我对Java非常陌生。您可以从命令行/DOS提示符运行该命令吗?您确定命令完全相同吗?注意丢失的空格等。什么是
-r
?我看不出有什么问题。
processComplete
的值是多少?这应该是从
mysqldump
返回的值。我可以从命令行使用相同的命令,但使用一些不同的语法,例如c:\mysqldump-uroot-proot dbname>“c:\location\backup.sql”使用上述命令时,将在数据库dbname的位置创建一个名为backup.sql的文件,用户名和密码为root。但是我可以在Java字符串中使用这个命令,所以我在互联网上检查了一下,得到了实际问题注释中提到的命令。根据这一点,-r用于给出需要保存备份的位置。ProcessComplete为null,rest waitfor()将在ProcessCompleteMy bad中提供一个int,我链接到的文档页面确实提供了--result file=file\u name,-r file\u name作为命令行选项。
-r
和文件名之间有一个空格,我想你应该确保你也有。我确实在
-r
和文件名之间有空格。p的精确值是
p=runtime.exec(“c:/wamp64/bin/mysql/mysql5.7.19/bin/mysqldump-u root-proot--add drop database-B dbName-r”+path)我知道我犯了一些愚蠢的错误,但我想不出来。我必须感谢你的关心。作为一个新手,这意味着我们很有希望解决这个问题。