写java读取sql脚本 并执行的代码
时间: 2023-09-15 17:05:36 浏览: 157
java-csv-reader:简单的脚本即可读取IATA机场,IANA时区中包含的CSV文件并生成SQL更新查询
### 回答1:
你可以使用Java的JDBC API来读取SQL脚本并执行。以下是一个简单的示例代码:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class SqlScriptExecutor {
public static void main(String[] args) throws Exception {
// 读取SQL脚本文件
BufferedReader reader = new BufferedReader(new FileReader("script.sql"));
String line = null;
StringBuilder sql = new StringBuilder();
while ((line = reader.readLine()) != null) {
sql.append(line);
sql.append("\n");
}
reader.close();
// 连接数据库并执行SQL脚本
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql.toString());
stmt.close();
conn.close();
}
}
```
在上面的代码中,我们首先使用`BufferedReader`类读取SQL脚本文件,并将其存储在一个`StringBuilder`对象中。然后,我们使用JDBC API连接到数据库,并使用`Statement`对象执行SQL脚本。最后,我们关闭`Statement`和`Connection`对象以释放资源。
### 回答2:
java读取sql脚本并执行的代码可以使用JDBC(Java Database Connectivity)来实现。首先,我们需要创建一个JDBC连接,连接到数据库。然后,我们使用BufferedReader来读取sql脚本文件中的内容,并将其逐行存储在一个字符串中。接下来,我们可以使用JDBC的Statement或PreparedStatement对象来执行这些sql语句。
下面是一个简单的示例代码:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class SqlScriptRunner {
public static void main(String[] args) {
String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase"; // 数据库连接URL
String username = "username"; // 数据库用户名
String password = "password"; // 数据库密码
String scriptPath = "path/to/sql/script.sql"; // sql脚本文件路径
try (Connection connection = DriverManager.getConnection(jdbcUrl, username, password);
BufferedReader reader = new BufferedReader(new FileReader(scriptPath));
Statement statement = connection.createStatement()) {
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append(System.lineSeparator()); // 每行结束加入换行符
}
String script = sb.toString();
statement.execute(script);
System.out.println("Sql脚本执行成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,我们使用了try-with-resources语句来确保在使用后自动关闭数据库连接和文件读取器,并通过StringBuilder来构建sql脚本字符串。然后,我们使用Statement对象的execute方法来执行sql脚本。
请注意,这只是一个简单的示例,如果你的sql脚本包含有特殊的语句(如存储过程、触发器、函数等),则可能需要进行额外的处理。此外,为了安全起见,建议对从外部读取的sql脚本进行一定的验证和过滤,以防止SQL注入等安全问题的出现。
### 回答3:
下面是一个用Java编写的读取SQL脚本并执行的代码:
```java
import java.io.*;
import java.sql.*;
public class SQLScriptExecutor {
public static void main(String[] args) {
try {
// 创建数据库连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
// 读取SQL脚本文件
File sqlScriptFile = new File("script.sql");
BufferedReader reader = new BufferedReader(new FileReader(sqlScriptFile));
// 构建SQL语句
StringBuilder sqlScript = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sqlScript.append(line);
sqlScript.append(" ");
}
// 执行SQL脚本
Statement statement = connection.createStatement();
statement.executeUpdate(sqlScript.toString());
// 关闭数据库连接
statement.close();
connection.close();
System.out.println("SQL脚本执行成功!");
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
上述代码首先创建一个数据库连接,并使用`getConnection`方法根据数据库URL、用户名和密码获取连接。然后,打开并读取SQL脚本文件,逐行读取内容,并使用`StringBuilder`构建SQL语句。接下来,通过创建一个`Statement`对象,利用`executeUpdate`方法执行SQL脚本并更新数据库。最后,关闭数据库连接和文件读取器。
请注意,你需要将代码中的`"jdbc:mysql://localhost:3306/mydatabase"`替换为您的实际数据库URL,以及将`"username"`和`"password"`替换为您的数据库用户名和密码。另外,你需要将`"script.sql"`替换为实际的SQL脚本文件路径。
阅读全文