PreparedStatement对象
比Statement对象更常用,而且可以防止SQL注入问题
区别
1. 创建方式
- 创建statement对象
Statement statement = connection.createStatement();
- 创建Preparedment对象
PreparedStatement preparedStatement = connection.prepareStatement(sql); //创建的时候就要加上sql语句
Preparedment需先写sql语句,再定义对象。
2. 执行sql语句方式
- statement执行语句
String sql = "UPDATE `users` SET `name` = 'tom' WHERE `name` = 'lisi'"; //定义sql语句
statement.executeUpdate(sql); //执行
- Preparedment执行语句
String sql ="UPDATE `users` SET `name` = ? WHERE `name` = ?"; //定义sql语句,?为占位符
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,"wangwu"); //1--第一个占位符的位置,该位置是String变量,故用setString函数
preparedStatement.setString(2,"Larry");
preparedStatement.executeUpdate(); //执行
PreparedStatement完整使用
这个是直接throw异常,也可以用try catch,最后要记得写finally{关闭连接}
public class TestUpdate {
public static void main(String[] args) throws SQLException {
Connection connection = null;
PreparedStatement pdst = null;
connection = JdbcUtils.getConnection();
String sql ="UPDATE `users` SET `name` = ? WHERE `name` = ?";
pdst = connection.prepareStatement(sql);
pdst.setString(1,"wangwu");
pdst.setString(2,"Larry");
int i = pdst.executeUpdate();
if (i>0){
System.out.println("修改成功");
}
JdbcUtils.closeConnection(connection,pdst,null);
}
}