请问大家sql语句预编译后怎么注入,我目前知道预编译是防止sql注入最有效的方法,但不知道怎么sql预编译后的注入,谢谢大家
1条回答 默认 最新
- unbounded3 2022-06-12 10:38关注
你说的应该是PreparedStatement,PreparedStatement本身是防注入的
Connection conn = null; try { conn = ConnectionHandler.getConn(); String sql = "INSERT INTO item(id,title,price,sales) VALUES(?,?,?,?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1,item.getId()); pstmt.setString(2,item.getTitle()); pstmt.setDouble(3,item.getPrice()); pstmt.setInt(4,item.getSales()); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); throw new SQLException("新增商品到商品表失败"); }
- 像这样,用PreparedStatement向插入一条数据,使用占位符“?”来占位
- 之后使用set方法,set方法里面的第一个参数代表第几个占位符(从1开始),第二个参数代表你用来替换占位符的内容
- 选择setString还是setInt还是其他,是根据占位符需要的数据类型判断的,比如上面这个代码,第一个占位符需要的值是字符串,所以用setString
- executeUpdate方法是执行PreparedStatement对象中的SQL查询,一般增删改都用这个方法
其实这些网上都可以查得到的,听别人说总是会有可能遗漏的
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
- ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
- ¥500 火焰左右视图、视差(基于双目相机)
- ¥100 set_link_state
- ¥15 虚幻5 UE美术毛发渲染
- ¥15 CVRP 图论 物流运输优化
- ¥15 Tableau online 嵌入ppt失败
- ¥100 支付宝网页转账系统不识别账号
- ¥15 基于单片机的靶位控制系统
- ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)