JDBC
一、什么是JDBC
JDBC的全称是Java数据库连接,它是一套用于执行SQL语句的Java API
不同种类的数据库在其内部处理数据的方式是不同的。
二、JDBC常用发的API
1、Driver接口
Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。在编写JDBC时,必须要把所有使用的数据库驱动程序或类库加载到项目的中
2、DriverManager类
DriverManager类用于加载JDBC驱动并且创建与数据库的连接
3、Connection接口
Connection接口代表Java程序和数据库的连接,只获得该连接对象后才能访问数据库并操作数据库
4、Statement接口
Statement接口用于执行静态的SQL语句,并返回一个结果对象,该接口的对象通过Connection实例的createStatement()方法获得,利用该对象把静态的SQL语句发送到数据库编译执行,然后返回数据库的处理结果。
5、PreparedStatement接口
Statement接口封装了JDBC执行SQL语句的方法,可以完成Java程序执行SQL语句的操作。PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。该接口扩展了带有参数SQL语句的执行操作,应用该接口中的SQL语句可以占位符“?”来代替其参数,然后通过set()方法为SQL语句的参数赋值。
6、ResultSet接口
ResultSet接口用于保持JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表给中。在ResultSet接口内部有一个指向表格数据行的游标,ResultSet对象初始化时,游标在第一行之前,调用next()方法将游标移动到下一行。
三、实现第一个JDBC程序
(1)加载并注册数据库驱动
(2)通过DriverManager获取数据库连接
(3)通过Connection对象获取Statement对象
(4)使用Statement执行SQL语句
(5)操作ResultSet结果集
(6)关闭连接,释放资源
1) 搭建数据库环境
2)创建项目环境,导入数据库驱动
3)编写JDBC程序
首先注册MYSQL数据库驱动,通过DriverManager获取一个Connection对象,然后使用Connection对象创建一个Statement对象,Statement对象通过executeQuery()方法执行SQL语句,并返回结果集ResultSet,接下来,通过遍历ResultSet得到的最终结果的查询结果,最后关闭连接,回收数据库资源。
1、注册驱动
2、释放资源
四、PreparedStatement对象
SQL语句的执行通过Statement对象实现的。Statement对象每次执行SQL语句时,都会对其进行编译。当相同的SQL语句执行多重时,Statement对象就会使数据频繁编译相同的SQL语句,从而降低数据库的访问效率。
为了解决上述问题,Statement提供了一个子类 PreparedStatement。PreparedStatement对象可以对SQL语句进行预编译,预编译的信息会存储在PreparedStatement对象中。当相同的SQL语句再次执行时,程序会使用PreparedStatement对象中的数据,而不需要对SQL语句再次编译去查询数据库。
通过Connection对象的PreparedStatement()方法生成PreparedStatement对象,然后调用PreparedStatement对象的set()方法,给SQL语句中的参数赋值,最后通过调用executeUpdate()方法执行SQL语句。
五、ResultSet对象
ResultSet主要用于存储结果集,可以通过next()方法有向前后逐个获取结果的数据。
首先获取Connection对象连接数据库,然后通过Connection对象创建Statement对象并设置所需的两个常量,接下来执行SQL语句,将获取的数据信息存储放在ResultSet中,最后通过ResultSet对象的absolute()方法取出ResultSet中指定数据的信息并输出。
六、使用JDBC完成数据的增删改查
1、创建JavaBean
2、创建工具栏
由于每次操作数据库时,都需要加载数据库驱动、创建数据库连接以及关闭数据库连接,为了避免代码的重复书写,专门创建用于数据库相关操作的工具类
3、创建DAO
该类中封装了对表users的添加、查询、删除和更新等操作。
4、创建测试栏
(1)编写测试类JDBCInsertTest,实现users表中添加数据的操作
(2)编写测试类FindAllUserTest,该类用于实现读取users表中的数据。
(3)编写FindUserByTest,在该类中实现读取users表中指定的数据。
(4)编写UpdateUserTest,在该类中实现修改users表中数据的操作
(5)编写DeleteUserTest,该类实现了删除users表中的数据的操作