Day1_JDBC——PreparedStatement

一.储备知识

sql注入:通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

换句话,比如注册账号时,要求你输入用户名username,这个username很可能在提交的时候与sql语句拼接成了新的sql语句,导致原本的sql语句被覆盖,从而很可能导致程序崩溃或者用户的信息泄露了,这样很不安全

二.解决sql注入的策略

使用PreparedStatement对数据库进行操作,PreparedStatement是Statement的子类,可以防止sql注入,因为在执行sql之前会将sql语句中有特殊含义的符号进行转义(即预编译)。

三.使用PreparedStatement操作数据库的步骤

  1. 获取数据库的连接(使用数据库工具类封装的方法,可回顾Day1_JDBC——数据库连接的帮助工具类
  2. 创建sql命令发送对象
  3. 执行sql命令并解析返回的结果
  4. 关闭资源

四.例子

@Test
	public void test04() throws Exception {
      //1.获取数据库连接
      Connection conn = JDBCUtils.getConn();//JDBCUtils是自定义的类,封装了数据库连接和释放方法
      String preSql = "select username from users "
    		          + "where username = ? and password = ?";
      //2.创建sql命令发送对象
      PreparedStatement ps = conn.prepareStatement(preSql);//要求必须提供一个sql语句进行预编译
                                                           //如果需要动态设置参数可用‘?’代替
      ps.setString(0, "zhangsan");//给第一个占位符设置具体的参数
      ps.setString(1, "123");//给第二个占位符设置具体的参数
      //3.执行sql命令并解析返回结果
      ps.executeQuery();
      //4.关闭资源
      JDBCUtils.closeConn(conn);
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值