PreparedStatement 的简单使用
作者:互联网
PreparedStatement 的简单使用
目录是什么 ?
PreparedStatement
是一个继承自Statement
的接口,它可以预编译SQL语句
为什么出现 ?
Statement的不足:
1、大量字符串拼接,代码可读性降低;
2、sql注入
sql注入是 ?一个bug
通过字符串的拼接,可以得到一个恒等的sql语句,可以跳过某些判断
- 比
Statement
多了提供参数化查询的特性
有什么优势 ?
- 创建
PreparedStatement
时,将SQL查询作为参数传递。
这个PreparedStatement包含一个预编译的SQL查询,所以当PreparedStatement被执行时,DBMS可以只运行查询,而不是首先编译它。 - 我们可以使用相同的
PreparedStatement
,并在执行时提供不同的参数。 - preparedstatement的一个重要优点是它们可以防止SQL注入攻击。
该接口的使用
tips:
以下代码中包含工具类的使用,异常也没有做相应处理。
1、建立链接
// 1、建立连接
connection = JDBCUtil.getConnection();
2、写SQL语句
// 2、写SQL
String sql = "select * from account where username = ? and password = ?";
3、创建PreparedStatement
对象预编译
// 3、预编译
pstmt = connection.prepareStatement(sql);
4、对占位符赋值(执行参数)
// 4、占位符赋值
pstmt.setString(1,username);
pstmt.setString(2,password);
5、执行SQL
// 5、正式执行 sql
ResultSet resultSet1 = pstmt.executeQuery();
PreparedStatement
的一些方法
- setlnt(int, int):该方法可用于在给定的参数索引处设置整型值。
- setString (int, string):这个方法可以用来在给定的参数索引处设置字符串值。
- setFloat(int, float):这个方法可以用来在给定的参数索引处设置float值。
- setDouble (int, double):该方法可用于在给定的参数索引处设置一个双精度值。
- executeUpdate():该方法可用于创建、删除、插入、更新、删除等。返回int类型。
- executeQuery():在执行选择查询时返回ResultSet的一个实例。
关闭连接
不要忘了关闭连接哇~~
小例子
/**
* 查询 id = 1 学生的总成绩
*/
@Test
public void testPst(){
// 建立连接
Connection conn = JDBCUtil.getConnection();
String sql = "SELECT stu.name,sum(sc.score)\n" +
"FROM student stu\n" +
"LEFT JOIN scores sc ON sc.s_id = stu.id\n" +
"LEFT JOIN course c ON sc.c_id = c.id\n" +
"WHERE stu.id = 1";
// 预编译
PreparedStatement pst = conn.prepareStatement(sql);
// 执行SQL
ResultSet res = pst.executeQuery();
while (res.next()){
// 我把这里的一个参数看作是你想查看的信息
String name = res.getString("stu.name");
int sum = res.getInt("sum(sc.score)");
System.out.println(name + " " + sum);
}
@Test
public void testPst02(){
/**
* 增加老师
*/
Connection conn = JDBCUtil.getConnection();
String sql = "INSERT INTO teacher VALUES(7,\"李老师\")";
PreparedStatement pst = conn.prepareStatement(sql);
int i = pst.executeUpdate(); // 这里返回值是整数 ~
if (i == 1) {
System.out.println("更新成功!");
}
}
参考:https://www.geeksforgeeks.org/how-to-use-preparedstatement-in-java/
标签:PreparedStatement,简单,int,使用,编译,sql,SQL,id 来源: https://www.cnblogs.com/fulfill/p/16601975.html