首页 > 代码库 > java学习之PreparedStatement
java学习之PreparedStatement
Prepared看到这个单词,准备的意思,PreparedStatement实则是预编译。那么与Statement又有什么区别呢?
PreparedStatemen有这样的好处:
1.防止重复编写多个结构类似的sql语句
2.没有拼接字符串的烦恼
3.防止sql注入(拼接字符串 会带来sql注入问题)
PreparedStatemen有这样的好处:
1.防止重复编写多个结构类似的sql语句
2.没有拼接字符串的烦恼
3.防止sql注入(拼接字符串 会带来sql注入问题)
4.sql语句预编译在PreparedStatement对象中,性能好
曾经在学习《牛腩新闻发布系统》的时候,牛老师讲过“sql语句注入”这样的知识,其实到了java还是会存在这样的问题,PreparedStatement就完美的解决了这样的问题。这样我就添加一个DRP中的实例,来共同学习一下吧。
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; import java.util.List;
/** * 添加用户 * @param user */ public void addUser(User user) { String sql = "insert into t_user (user_id, user_name, password, contact_tel, email, create_date) " + " values (?, ?, ?, ?, ?, ?)"; //插入新用户 Connection conn = null; //实例化PreparedStatement和结果集 PreparedStatement pstmt = null; //实例化PreparedStatement和结果集 try { conn = DbUtil.getConnection(); //得到sql语句 pstmt = conn.prepareStatement(sql); //预编译的作用在这体现出来了。 pstmt.setString(1, user.getUserId()); //用户Id pstmt.setString(2, user.getUserName()); //用户姓名 pstmt.setString(3, user.getPassword()); //用户密码 pstmt.setString(4, user.getContactTel()); //用户电话号码 pstmt.setString(5, user.getEmail()); //用户邮箱 //pstmt.setTimestamp(6, new Timestamp(System.currentTimeMillis())); pstmt.setTimestamp(6, new Timestamp(new Date().getTime())); pstmt.executeUpdate(); }catch(SQLException e) { e.printStackTrace(); //截取异常的处理 }finally { DbUtil.close(pstmt); DbUtil.close(conn); } }这只是一部分代码,但是很详细的体现了PreparedStatement的用法。关于底层的应用应该就是固定的知识,当自己见得多了,也就没有以前的那种心慌了。
java学习之PreparedStatement
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。