我开发了java桌面应用程序,我有一个类来创建MySQL数据库并在其中执行SQL脚本。实际上我的脚本是java包,即com.scriptrunner/myscript.sql
。当我执行像c:\myscript.sql
这样的本地驱动器中的脚本时,工作正常,但我找不到从项目包中读取SQL脚本并执行它的解决方案。我使用iBatis ScriptRunner来运行这个脚本。桌面应用程序可以从包中读取sql脚本并执行吗?
谢谢。
答案 0 :(得分:0)
我们可以通过此代码执行我们包中的sql脚本。我们需要在我们的库中添加ibatis-sqlmap-2.3.0.jar。此代码首先创建数据库myDb,然后找到脚本文件的路径,即在com.command.sql包中,最后将脚本运行到myDb数据库中。
String dbName = "myDb";
String jdbcDriver = "com.mysql.jdbc.Driver"
//Created new database myDb.
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/?user=root&password=")) {
Statement s = conn.createStatement();
int Result = s.executeUpdate("CREATE DATABASE IF NOT EXISTS "+dbName);
}
//This is the path to database; i.e. in com.command.sql package.
String scriptFilePath = "src\\com.command.sql\\mydatabase.sql";
// Create MySql Connection
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/"+dbName, "root", "root");
Statement stmt = null;
Class.forName(jdbcDriver);
try {
// Initialize object for ScripRunner
ScriptRunner sr = new ScriptRunner(con, false, false);
// Give the input file to Reader
Reader reader = new BufferedReader(new FileReader(scriptFilePath ));
// Exctute script
sr.runScript(reader);
} catch (IOException | SQLException e) {
System.err.println("Failed to Execute" + scriptFilePath
+ " The error is " + e.getMessage());
}