欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java回顾之JDBC(1)

来源: javaer 分享于  点击 10194 次 点评:54

Java回顾之JDBC(1)


 概述

尽管在实际开发过程中,我们一般使用ORM框架来代替传统的JDBC,例如Hibernate或者iBatis,但JDBC是Java用来实现数据访问的基础,掌握它对于我们理解Java的数据操作流程很有帮助。

JDBC的全称是Java Database Connectivity。

JDBC对数据库进行操作的流程:

  • 连接数据库
  • 发送数据请求,即传统的CRUD指令
  • 返回操作结果集

JDBC中常用的对象包括:

  • ConnectionManager
  • Connection
  • Statement
  • CallableStatement
  • PreparedStatement
  • ResultSet
  • SavePoint

一个简单示例

我们来看下面一个简单的示例,它使用JDK自带的Derby数据库,创建一张表,插入一些记录,然后将记录返回:

  1.  private static void test1() throws SQLException 
  2.  { 
  3.      String driver = "org.apache.derby.jdbc.EmbeddedDriver"
  4.      String dbURL = "jdbc:derby:EmbeddedDB;create=true"
  5.       
  6.      Connection con = null
  7.      Statement st = null
  8.      try 
  9.      { 
  10.          Class.forName(driver); 
  11.          con = DriverManager.getConnection(dbURL); 
  12.          st = con.createStatement(); 
  13.          st.execute("create table foo(ID INT NOT NULL, NAME VARCHAR(30))"); 
  14.          st.executeUpdate("insert into foo(ID,NAME) values(1, 'Zhang San')"); 
  15.           
  16.          ResultSet rs = st.executeQuery("select ID,NAME from foo"); 
  17.           
  18.          while(rs.next()) 
  19.          { 
  20.              int id = rs.getInt("ID"); 
  21.              String name = rs.getString("NAME"); 
  22.              System.out.println("ID=" + id + "; NAME=" + name); 
  23.          } 
  24.      } 
  25.      catch(Exception ex) 
  26.      { 
  27.          ex.printStackTrace(); 
  28.      } 
  29.      finally 
  30.      { 
  31.          if (st != null) st.close(); 
  32.          if (con != null) con.close(); 
  33.      } 
  34.  } 

如何建立数据库连接

上面的示例代码中,建立数据库连接的部分如下:

String driver = "org.apache.derby.jdbc.EmbeddedDriver"; String dbURL = "jdbc:derby:EmbeddedDB;create=true";  Class.forName(driver); con = DriverManager.getConnection(dbURL);

建立数据库连接的过程,可以分为两步:

1)加载数据库驱动,即上文中的driver以及Class.forName(dirver)

2)定位数据库连接字符串, 即dbURL以及DriverManager.getConnection(dbURL)

不同的数据库,对应的dirver和dbURL不同,但加载驱动和建立连接的方式是相同的,即只需要修改上面driver和dbURL的值就可以了。

自动加载数据库驱动

如果我们每次建立连接时,都要使用Class.forName(...)来手动加载数据库驱动,这样会很麻烦,我们可以通过配置文件的方式,来保存数据库驱动的信息。

我们可以在classpath中,即编译出来的.class的存放路径,添加如下文件:

META-INF\services\java.sql.Driver

对应的内容就是JDBC驱动的全路径,也就是上面driver变量的值:

org.apache.derby.jdbc.EmbeddedDriver

接下来,我们在程序中,就不需要再显示的用Class.forName(...)来加载驱动了,它会被自动加载进来,当我们的数据库发生变化时,只需要修改这个文件就可以了,例如当我们的数据库由Derby变为MySQL时,只需要将上述的配置修改为:

com.mysql.jdbc.Driver

但是,需要注意一点,这里只是配置了JDBC驱动的全路径,并没有包含jar文件的信息,因此,我们还是需要将包含该驱动的jar文件手动的放置到程序的classpath中。

JDBC中的基本操作

对于数据库操作来说,CRUD操作应该是最常见的操作了, 即我们常说的增、删、查、改。

JDBC是使用Statement和ResultSet来完成这些操作的。

如何实现CRUD

下面是一个实现CRUD的示例:

JDBC实现基本的CRUD示例

我们顺序调用上面的测试方法:

1 insertTest(); 2 deleteTest(); 3 updateTest();

执行结果如下:

=====insert test===== ID:1; NAME=Zhang San ID:2; NAME=Li Si ID:3; NAME=Wang Wu =====delete test===== ID:1; NAME=Zhang San ID:2; NAME=Li Si =====update test===== ID:1; NAME=Zhang San ID:2; NAME=TEST

上面代码中的showUser方法会把user表中的所有记录打印出来。


相关栏目:

用户点评