JDBC概述 & SQL注入攻击

数据库驱动:

数据库厂商为了方便开发人员从程序中操作数据库而提供的一套jar包,通过导入这个jar包就可以调用其中的方法操作数据库,这样的jar包就叫做数据库驱动

JDBC:

sun定义的一套标准,本质上是一大堆的操作数据库的接口,所有数据库厂商为java设计的数据库驱动都实现过这套接口,这样一来同一了不同数据库驱动的方法,开发人员只需要学习JDBC就会使用任意数据库驱动了。

六个步骤实现JDBC:

//1.注册数据库驱动

DriverManager.registerDriver(new Driver());

//2.获取数据库连接

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day10", "root", "root");

//3.获取传输器对象

Statement stat = conn.createStatement();

//4.利用传输器传输sql语句到数据库中执行,获取结果集对象

ResultSet rs = stat.executeQuery("select * from user");

//5.遍历结果集获取查询结果

while(rs.next()){

String name = rs.getString("name");

System.out.println(name);

}

//6.关闭资源

rs.close();

stat.close();

conn.close();


SQL注入攻击:

由于dao中执行的SQL语句是拼接出来的,其中有一部分内容是由用户从客户端传入,所以当用户传入的数据中包含sql关键字时,就有可能通过这些关键字改变sql语句的语义,从而执行一些特殊的操作,这样的攻击方式就叫做sql注入攻击

PreparedStatement:

PreparedStatement利用预编译的机制将sql语句的主干和参数分别传输给数据库服务器,从而使数据库分辨的出哪些是sql语句的主干哪些是参数,这样一来即使参数中带了sql的关键字,数据库服务器也仅仅将他当作参数值使用,关键字不会起作用,从而从原理上防止了sql注入的问题

PreparedStatement主要有如下的三个优点:

~1.可以防止sql注入

~2.由于使用了预编译机制,执行的效率要高于Statement

~3.sql语句使用?形式替代参数,然后再用方法设置?的值,比起拼接字符串,代码更加优雅.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JDBC简介 SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC。JDBC...
    奋斗的老王阅读 1,569评论 0 51
  • 1.1JDBC概述 JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行...
    三哥无邪阅读 805评论 1 0
  • 本人的环境为Myeclipse10、MySQL5.7.15 本文包括:简介JDBC编程步骤打通数据库程序详解—Dr...
    廖少少阅读 4,130评论 7 39
  • 本节介绍Statement接口及其子类PreparedStatement和CallableStatement。 它...
    zlb阅读 1,211评论 0 0
  • 昨天看了小六的《让未来现在就来》,印象最深的只有一句话:最重要的是开始,不是方法。随着生活中,逐渐改变自己的思维、...
    melody李小婷阅读 1,382评论 0 7