首先简介一下JDBC:
JDBC:Java DataBase Connection.
JDBC:Java数据库连接。它是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问.
它由一组用Java语言编写的类和接口组成。
JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。
一、Java访问数据库的原理:
举个例子来讲:Oracle、SQLServer、MySQL、DB2等数据库可以类比为“水厂”,Connection类比为“水厂放水到小区的阀门”,Statement类比为“小区放水到家中的阀门”,ResultSet类比为“家中放水的阀门”。
因此,当Java连接数据库的时候,先要打开水厂的阀门(Connection),然后打开小区的阀门(Statement),接着打开家中的阀门(ResultSet),这样水才能流到家中(数据库才能与用户端进行连接)。这之后,
才能使用水(JavaApp来操作结果集,进行增删改查CRUD)。
同样的,连接关闭的原则:“先开后关,后开先关”,也就是:先关家里的阀门,再关小区的阀门,最后关水厂的阀门。如果直接先关掉小区的阀门而不先关家里的阀门,那可能会影响到小区其他家庭的使用。
JDBC访问数据库的步骤:
1.加载数据库驱动类
2.获得数据库连接
3.获得数据库操作句柄
4.获得结果集(查询)
5.处理结果集
6.关闭结果集
7.关闭操作句柄
8.关闭数据库连接
二、导入数据库驱动程序(MySQL为例)和JUnit单元测试类:
导入数据库驱动程序的步骤:
工程名上点击右键 -> Build Path -> Configure Build Path -> 在Libraries中,点击Add External JARs -> 进入MySQL的解压包里的mysql-connector-java-5.1.36-bin.jar。可以去MySQL官网下载,注意
之后可以在Window->Open Perspective->MyEclipse Database Explorer里 new一个新的MySQL Connector/J。(其它数据库类似,也需导入各自的数据库驱动程序)
导入JUnit的步骤:
工程名上点击右键 -> Build Path -> Add Libraries -> 选择JUnit,点击Next -> 选择JUnit 4,单击Finish -> 导入成功。
这两步完成之后,接下来就可以写代码了。
三、JDBC处理的步骤:
1.建表 / 建序列 / 初始化数据
(使用 PL/SQL Developer 工具完成)
Table:dept
2.实体类/POJO/JavaBean/封装类
Class:Dept
3.导入 数据库驱动程序 到工程
ojdbc6.jar (Oracle11g)
ojdbc14.jar (Oracle10g)
4.新建数据库工具类:
4.1 获取数据库连接的方法
4.2 关闭数据库连接的方法
5.新建dao类封装对数据库的所有操作 (增删改查 - CRUD)
四,下面贴出代码:使用实体类封装数据库表
实体类(pojo类):其作用是用来封装表中的一条数据。(或:用来封装类的属性和方法)。
表中的一条记录:对应于一个实体。
写实体类:必须写三部分:属性、默认构造方法(无参构造方法)、setter和getter方法。其他方法:用到才写,不用就不写。
package com.gm.pojo; import java.io.Serializable; /** * 实体类(pojo类) * * @author XiangdongLee * */ public class Dept implements Serializable { private static final long serialVersionUID = 1L; private Integer deptno; private String dname; private String loc; public Dept() { super(); } public Integer getDeptno() { return deptno; } public void setDeptno(Integer deptno) { this.deptno = deptno; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } }
五,下面贴出代码:创建数据库工具类,来获得数据库连接与关闭数据库连接(以MySQL为例,其它数据库只需更改drivername,url)
package com.gm.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * DBUtil:数据库工具类 * * @author XiangdongLee * */ public class DBUtil { /** * 获得数据库连接 * * @return */ public static Connection getConnection() { Connection conn = null; String driverName = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/dbmin"; String username = "scott"; String password = "tiger"; try { Class.forName(driverName); conn = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { System.out.println("加载数据库驱动出错..."); e.printStackTrace(); } catch (SQLException e) { System.out.println("获得数据库连接出错..."); e.printStackTrace(); } return conn; } /** * 关闭数据库连接 * * @param conn * @param ps * @param rs */ public static void close(Connection conn, PreparedStatement ps, ResultSet rs) { // 关闭原则:先开后关,后开先关 if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void main(String[] args) { System.out.println(getConnection()); } }
接下来就可以创建dao类,来封装数据表的所有操作(增删改查CRUD)