在Java中动态拼接SQL语句并执行可以使用PreparedStatement预编译的方式,该方式可以防止SQL注入攻击,并提高SQL的执行效率。
下面是一个简单的示例,展示了如何动态拼接SQL并执行:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Main {public static void main(String[] args) {
String name = “John”; // 假设需要动态拼接的查询条件是name字段的值为John
try {
// 连接数据库
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/
mydb", “username”, “password”);
// 构建SQL语句
String sql = “SELECT * FROM my_table WHERE name = ?”;
// 创建PreparedStatement对象
PreparedStatement statement = connection.prepareStatement(sql);
// 设置动态参数
statement.setString(1, name);
// 执行查询
ResultSet resultSet = statement.executeQuery();
// 处理查询结果
while (resultSet.next()) {
// 获取结果集中的数据
int id = resultSet.getInt(“id”);
String name = resultSet.getString(“name”);
// 处理数据
System.out.println("ID: " + id + ", Name: " + name);
}
// 关闭连接
resultSet.close();
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
} }
上述代码中,首先创建一个Connection对象来连接数据库,然后构建SQL语句,使用PreparedStatement对象预编译SQL语句,并通过setXXX()方法设置动态参数,最后执行查询操作并处理查询结果。
需要注意的是,上述代码中的数据库连接信息(URL、用户名、密码)需要根据实际情况进行修改。