【JAVA SE基础篇】72.JDBC介绍和流程

1.JDBC介绍

什么是JDBC?

  JDBC是为java开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成。是java程序与数据库系统通信的标准API。

  JDBC API使得开发人员可以使用纯java的方式来连接数据库,并执行操作。

为什么使用JDBC?

  sun公司不知道主流数据库的程序代码。无法提供代码连接数据库。因此,sun自己提供api。

  凡是想与java连接的数据库,数据库厂商自己必须实现jdbc这套接口。而数据库场厂商的jdbc实现

  也就是数据库的数据库驱动。

2.JDBC流程

  1.加载Drivet驱动

加载JDBC驱动是通过调用方法java.lang.Class.forName()

加载语句的形式 : 

  Class.forName(“oracle.JDBC.driver.OracleDriver”);//使用Oracle的JDBC驱动程

  Class.forName(“com.microsoft.JDBC.sqlserver.SQLServerDriver”);//使用SQL Server的JDBC驱 动程序 

  Class.forName(“com.ibm.db2.JDBC.app.DB2Driver”);//使用DB2的JDBC驱动程序

  Class.forName("com.mysql.JDBC.Driver");//使用MySql的JDBC驱动程序

  2.创建数据库连接

与数据库建立连接的方法是调用DriverManager.getConnection(String url, String user, String password )方法

DriverManager接口是JDBC的管理层,作用于用户和驱动程序之间。跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接。

连接MySql数据库:Connection con= DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password");

连接Oracle数据库:Connection con= DriverManager.getConnection("jdbc:oracle:thin:@host:port/database", "user", "password");

注:连接对象内部其实包含了Socket对象,是一个远程的连接。比较耗时!这是Connection对象管理的一个要点!真正开发中,为了提高效率,都会使用连接池来管理连接对象!

  3.创建Statement发送命令,发送SQL语句并获取结果

Statement接口:Statement对象用于将 SQL 语句发送到数据库中,或者理解为执行sql语句 

  有三种 Statement对象: 

1.Statement:用于执行不带参数的简单SQL语句;

2.PreparedStatement(最常用)(从 Statement 继承):用于执行带或不带参数的预编译SQL语句;

3.CallableStatement(从PreparedStatement 继承):用于执行数据库存储过程的调用

  常用Statement方法:

1.ResultSet executeQuery(String sql):可以执行插入、删除、更新等操作,返回值是执行该操作所影 响的行数

2.boolean execute(String sql):可以执行任意SQL语句,然后获得一个布尔值,表示是否返回 ResultSet

3.int executeUpdate(String sql):执行SQL查询并获取到ResultSet对象

例:

  4.处理结果

ResultSet对象是executeQuery()方法的返回值,它被称为结果集,它代表符合SQL语句条件的 所有行,并且它通过一套getXXX方法(这些get方法可以访问当前行中的不同列)提供了对这 些行中数据的访问。

ResultSet里的数据一行一行排列,每行有多个字段,且有一个记录指针,指针所指的数据行 叫做当前数据行,我们只能来操作当前的数据行。

我们如果想要取得某一条记录,就要使用 ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。

ResultSet对象自动维护指向当前数据行的游标。每调用一次next()方法,游标向下移动一行。

初始状态下记录指针指向第一条记录的前面,通过next()方法指向第一条记录。循环完毕后 指向最后一条记录的后面。

  常用方法:

1.boolean next():将光标从当前位置向下移动一行

2.boolean previous():游标从当前位置向上移动一行 

3.void close():关闭ResultSet 对象

4.xxx getxxx(xxx colIndex):以xxx形式获取结果集当前行指定列号值 

5.xxx getxxx(String colLabel) 以xxx形式获取结果集当前行指定列名值

例:

  5.关闭数据库资源

作为一种好的编程风格,应在不需要Statement对象和Connection对象时显式地关闭它们。

关闭Statement对象和Connection对象的语法形式为: public void close() throws SQLException

用户不必关闭ResultSet。当它的 Statement 关闭、重新执行或用于从多结果序列中获取下一 个结果时,该ResultSet将被自动关闭。

注:

  要按先ResultSet结果集,后Statement,最后Connection的顺序关闭资源,

  因为 Statement和ResultSet是需要连接是才可以使用的,

  所以在使用结束之后有可能其他的 Statement还需要连接,所以不能先关闭Connection。

  一定要将三个trycatch块,分开写!

原文地址:https://www.cnblogs.com/chengkuan/p/13449311.html