版权声明:本文为作者创作,转载请注明出处:http://blog.csdn.net/claroja,如有商业用途请联系QQ:63183535。 https://blog.csdn.net/claroja/article/details/89926225
“Statement”对象,每执行一条语句,都会让数据库先编译再运行
“PreparedStatement”对象,则会相同语句,不同参数(通过?号传入)进行一次编译
所以“PreparedStatement”对象有两个优点:
1.预编译功能提高了执行效率
2.通过“?”传递参数,可以防止SQL注入,安全性高
Connection 接口 | 描述 |
---|---|
PreparedStatement prepareStatement(String sql) | 指定预编译sql语句,使用“?”作为参数占位符 |
PreparedStatement 接口 | 描述 |
---|---|
int executeUpdate() | 执行 DML,增删改的操作,返回影响的行数。 |
ResultSet executeQuery() | 执行 DQL,查询的操作,返回结果集 |
PreparedStatement接口设置参数方法 | 描述 |
---|---|
void setDouble(int parameterIndex, double x) | 第一个参数是指定“?”号的位置,第二个参数是填入的值。 |
void setFloat(int parameterIndex, float x) | 第一个参数是指定“?”号的位置,第二个参数是填入的值。 |
void setInt(int parameterIndex, int x) | 第一个参数是指定“?”号的位置,第二个参数是填入的值。 |
void setLong(int parameterIndex, long x) | 第一个参数是指定“?”号的位置,第二个参数是填入的值。 |
void setObject(int parameterIndex, Object x) | 第一个参数是指定“?”号的位置,第二个参数是填入的值。 |
void setString(int parameterIndex, String x) | 第一个参数是指定“?”号的位置,第二个参数是填入的值。 |
示例:
String sql = "select * from test where name=?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, name);
ResultSet resultSet = ps.executeQuery();