我是靠谱客的博主 细腻柜子,最近开发中收集的这篇文章主要介绍【大数据系列之JDBC】(五):使用PrepareStatement防止SQL注入,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 可以通过调用 Connection 对象的 preparedStatement(String sql) 方法获取 PreparedStatement 对象

  • PreparedStatement 接口是 Statement 的子接口,它表示一条预编译过的 SQL 语句

  • PreparedStatement 对象所代表的 SQL 语句中的参数用问号(?)来表示,调用 PreparedStatement 对象的 setXxx() 方法来设置这些参数. setXxx() 方法有两个参数,第一个参数是要设置的 SQL 语句中的参数的索引(从 1 开始),第二个是设置的 SQL 语句中的参数的值

1.插入操作

public void testInsert() throws Exception {
        // 1.获取数据库连接
        Connection conn = JDBCUtils.getConnection();

        // 2.预编译SQL语句
        String sql = "insert into customers(name, email, birth) values(?, ?, ?)";

        // 3.获取PreparedStatement对象
        PreparedStatement ps = conn.prepareStatement(sql);

        // 4.填充占位符
        ps.setString(1, "哪吒");
        ps.setString(2, "nezha@gmail.com");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse("2022-12-22");
        ps.setDate(3, new java.sql.Date(date.getTime()));

        // 5.执行SQL语句
        ps.execute();

        // 6.关闭资源
        JDBCUtils.closeResource(conn, ps);
    }

2.更新操作

public void testUpdate() {
        Connection conn = null;
        PreparedStatement ps = null;

        try {
            // 1.获取数据库连接
            conn = JDBCUtils.getConnection();

            // 2.预编译SQL语句
            String sql = "update customers set name = ? where id = ?";

            // 3.获取PreparedStatement对象
            ps = conn.prepareStatement(sql);

            // 4.填充占位符
            ps.setObject(1, "莫扎特");
            ps.setObject(2, 18);

            // 5.执行SQL语句
            ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 6.关闭资源
            JDBCUtils.closeResource(conn, ps);
        }
    }

最后

以上就是细腻柜子为你收集整理的【大数据系列之JDBC】(五):使用PrepareStatement防止SQL注入的全部内容,希望文章能够帮你解决【大数据系列之JDBC】(五):使用PrepareStatement防止SQL注入所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部