JDBC基础学习

本文详细介绍了JDBC的基本概念、工作原理、接口及数据库厂商实现,包括Statement和PreparedStatement接口的使用,ResultSet接口处理结果集,以及JDBC事务、连接池、异常处理等核心API。同时讲解了Oracle和MySQL的数据库厂商实现,以及JDBC高级编程中的事务管理、批量更新、返回自动主键和分页查询等实用技巧。此外,还讨论了DAO设计模式在数据访问中的应用。
摘要由CSDN通过智能技术生成

Top

  1. JDBC原理
  2. JDBC基础编程

1. JDBC原理

1.1. JDBC标准

1.1.1. JDBC是什么

Java Database Connectivity:Java访问数据库的解决方案。

JDBC是Java应用程序访问数据库的里程碑式解决方案。Java研发者希望用相同的方式访问不同的数据库,以实现与具体数据库无关的Java操作界面。

JDBC定义了一套标准接口,即访问数据库的通用API,不同的数据库厂商根据各自数据库的特点去实现这些接口。

图-1应用、JDBC和数据库的关系

1.1.2. JDBC接口及数据库厂商实现

JDBC中定义了一些接口:

1、驱动管理:

  • DriverManager

2、连接接口

  • Connection
  • DatabasemetaData

3、语句对象接口

  • Statement
  • PreparedStatement
  • CallableStatement

4、结果集接口

  • ResultSet
  • ResultSetMetaData

1.1.3. JDBC工作原理

JDBC只定义接口,具体实现由各个数据库厂商负责。

程序员使用时只需要调用接口,实际调用的是底层数据库厂商的实现部分。

图-2 通过JDBC访问数据库的过程

JDBC访问数据库的工作过程:

  1. 加载驱动,建立连接
  2. 创建语句对象
  3. 执行SQL语句
  4. 处理结果集
  5. 关闭连接

1.1.4. Driver接口及驱动类加载

要使用JDBC接口,需要先将对应数据库的实现部分(驱动)加载进来。

驱动类加载方式(Oracle):


    
    
    
  1. Class.forName("oracle.jdbc.driver.OracleDriver");

这条语句的含义是:装载驱动类,驱动类通过static块实现在DriverManager中的“自动注册”。

1.1.5. Connection接口

Connection接口负责应用程序对数据库的连接,在加载驱动之后,使用url、username、password三个参数,创建到具体数据库的连接。


    
    
    
  1. Class.forName("oracle.jdbc.OracleDriver")
  2. //根据url连接参数,找到与之匹配的Driver对象,调用其方法获取连接
  3. Connection conn = DriverManager.getConnection(
  4. "jdbc:oracle:thin:@192.168.0.26:1521:tarena",
  5. "openlab","open123");

需要注意的是:Connection只是接口,真正的实现是由数据库厂商提供的驱动包完成的。

1.1.6. Statement接口

Statement接口用来处理发送到数据库的SQL语句对象,通过Connection对象创建。主要有三个常用方法:


    
    
    
  1. Statement stmt=conn.createStatement();
  2. //1.execute方法,如果执行的sql是查询语句且有结果集则返回true,如果是非查询语句或者没有结果集,返回false
  3. boolean flag = stmt.execute(sql);
  4. //2.执行查询语句,返回结果集
  5. ResultSetrs = stmt.executeQuery(sql);
  6. //3.执行DML语句,返回影响的记录数
  7. int flag = stmt.executeUpdate(sql);

1.1.7. ResultSet接口

执行查询SQL语句后返回的结果集,由ResultSet接口接收。

常用处理方式:遍历 / 判断是否有结果(登录)。


    
    
    
  1. String sql = "select * from emp";
  2. ResultSetrs = stmt.executeQuery(sql);
  3. while (rs.next()) {
  4.     System.out.println(rs.getInt("empno")+",“
  5. +rs.getString("ename") );
  6. }

查询的结果存放在ResultSet对象的一系列行中,指针的最初位置在行首,使用next()方法用来在行间移动,getXXX()方法用来取得字段的内容。

1.2. 数据库厂商实现

1.2.1. Oracle实现

在Java程序中访问不同数据库,需要下载对应数据库的驱动。Oracle数据库提供的驱动为ojdbc6.jar或者ojdbc14.jar,在开发时需要将驱动类加载到项目中,通过设置MyEclipse的Build Path选项。

使用时就可以如下方式加载驱动类了:


    
    
    
  1. Class.forName("oracle.jdbc.driver.OracleDriver");

1.2.2. MySQL实现

MySQL对应的数据库驱动名为mysql-connector-java-5.0.4-bin.jar(不同版本可能有不同名称),将驱动类加载到项目中同样通过设置MyEclipse的Build Path选项。

加载驱动类的方式:


    
    
    
  1. Class.forName("com.mysql.jdbc.Driver");

2. JDBC基础编程

2.1. 连接管理

2.1.1. 通过连接工具类获取连接

在工程中,通常编写一个访问数据库的工具类,此后所有访问数据库的操作,都从工具类中获取连接。

实现工具类的两种方式:

  • 直接把数据配置写在工具类。
  • 把数据库配置写在一个properties属性文件里,工具类读入属性文件,逐行获取数据库参数。

建议使用第二种。

2.1.2. 通过属性文件维护连接属性

db.properties的内容:


    
    
    
  1. #驱动类名
  2. jdbc.driver=oracle.jdbc.driver.OracleDriver
  3. #连接字符串
  4. jdbc.url=jdbc:oracle:thin:@192.168.0.26:1521:tarena
  5. #访问数据库的用户名
  6. jdbc.user=openlab
  7. #访问数据库的密码
  8. jdbc.password=open123

注意:在properties文件中,#符号表示注释。

2.1.3. 从类路径中加载属性文件

定义好db.properties之后,需要在Java程序中找到它,可以使用从类路径加载的方式:


    
    
    
  1. //属性文件所在的位置
  2. String path = "com/tarena/dms/daodemo/v2/db.properties";
  3. //获得当前类的路径,加载指定属性文件
  4. properties.load(DBUtility.class.getClassLoader()
  5. .getResourceAsStream(path));

2.1.4. 连接的关闭

在工具类中定义公共的关闭连接的方法,所有访问数据库的应用,共享此方法。当完成功能,关闭连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值