ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PreparedStatement 的简单使用

2022-08-19 15:03:41  阅读:147  来源: 互联网

标签:PreparedStatement 简单 int 使用 编译 sql SQL id


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);

image

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有