JDBC
- JDBC概述
-JDBC为访问不同的数据库提供了同一的接口,为使用者屏蔽了细节问题。
-Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作
JDBC的基本原理图:
二、JDBC快速入门
简单案例入门:
建表
配置驱动 添加libs: mysql-connection-5.1.37.jar
1.注册驱动-加载Drive
这个Diver类是com.mysql.jdbc.Driver包里的 不是sql.*里的
2.获取连接-得到connection
3.执行增删改查-发送SQL给mysql执行
4.释放资源-关闭相关连接
三、获取数据库连接的5种方式
-方式1:如上例子,先new一个Diver对象,在将数据库的登录配置写入properties然后用url进行连接,这样的Diver是第三方的一个静态对象,依赖性较高
-方式2:用反射机制动态加载,更加灵活
-方式3:使用DiverManager代替driver进行统一管理,不用创建Propreties对象
-方式4:在方式3中,要先注册Driver驱动才能使用DriverManager的getConnection方法
但是使用反射加载Driver对象时会自动完成这一步,所以方式4非常简便
具体底层自动完成的注册语句:
这种方式连接是在实际开发中使用的最多的
而且不写第一句的Class.forName…也可以连接到数据库,原因:
-Mysql驱动5.1.6可以无需Class.forName
-从jdk1.5以后使用的jdbc4,不在需要显示调用class.forName注册驱动,而是自动调用驱动jar包下的META-INF\services\java.sql.Driver文本中的类的名称去注册
但还是建议写上forName ,因为更加明确
-方式5:不同于前四中方式要手写数据库注册信息,第五种使用配置文件(src目录下的properties文件),使连接更加灵活
四、JDBC API
1.PrepareStatement
-预编译SQL语句并执行,预防SQL注入问题
SQL注入就是通过输入来修改事先定义好的SQL语句,用来达到代码对服务器进行攻击的效果
例如,判断一个用户是否登录成功是一个判断用户名和密码在数据库中是否存在的过程,在密码中输入’ or ‘1’ = ‘1 这种,就会让事先定义好的sql语句加了一个恒等式,使其判断失去作用。
PrepareStatement的好处:
-预编译SQL,性能好
-防止SQL注入
2.DriverManager
工具类作用:
-注册驱动
-获取数据库链接
3.Connection
-获取执行SQL的对象:
-事务管理
4.Statement
Statement的作用就是执行sql语句
5.ResultSet
-表示数据库结果集的数据表,通常通过执行查询数据库的语句生成
-ResultSet对象保持一个光标只想其当前的数据行。最初,光标位于第一行之前
-next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false,因此可以在while循环中使用循环来便利结果集
五、连接池
数据库连接池是一个容器,负责分配、管理数据库连接
常见的数据库连接池:
DBCP C3P0 Druid(德鲁伊)
Druid连接池是阿里巴巴开源的数据库连接池项目,功能强大,性能优秀,是java语言最好的数据库连接池之一
Durid使用: