开发者社区> 壹佰、> 正文

【大数据系列之JDBC】(五):使用PrepareStatement防止SQL注入

简介: 【大数据系列之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);
        }
    }


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
sql注入碰到加密数据怎么办
sql注入碰到加密数据怎么办
21 0
常见的sql注入类型闭合及符号
常见的sql注入类型闭合及符号
32 0
sql注入常用函数
sql注入常用函数
51 0
SQL注入基础(报错注入及延时注入)
SQL注入基础(报错注入及延时注入)
19 0
SQL注入基础相关概念
SQL注入基础相关概念
20 0
20、绕过去除and、or、union select、空格的sql注入
20、绕过去除and、or、union select、空格的sql注入
23 0
14、sql注入绕过技术
14、sql注入绕过技术
25 0
从SQL注入到脚本(下)
从SQL注入到脚本(下)
19 0
从SQL注入到脚本(上)
从SQL注入到脚本(上)
34 0
+关注
壹佰、
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
用SQL做数据分析
立即下载
阿里云流计算 Flink SQL 核心功能解密
立即下载
Comparison of Spark SQL with Hive
立即下载