如何使用Java导入Mysql数据库
我需要使用Java导入我的数据库。我使用的是Wamp和SQL版本5.7.19。当用户单击导出按钮并将.sql文件保存到用户选择的路径时,我正在尝试获取数据库的备份。谁能告诉我是什么问题吗如何使用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 {
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)代码>我知道我犯了一些愚蠢的错误,但我想不出来。我必须感谢你的关心。作为一个新手,这意味着我们很有希望解决这个问题。