当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>Java进阶

Java网络数据库编程及其应用


  随着电子商务及动态网站的迅速发展,Java 网络数据库编程得到了越来越广泛的应用。
  JDBC由一组用Java语言编写的类组成,它已成为一种供数据库开发者使用的标准API。通过JDBC本身提供的一系列类和接口,Java 编程开发人员能够很方便地编写有关数据库方面的应用程序。
  JDBC简介
  JDBC(Java Database Connectivity) 是Java 实现数据库访问的API(Application Programming Interface),与Microsoft 的ODBC(Open Database Connectivity) 一样,JDBC是建立在X/Open SQL CLI(Call Level Interface)基础上的。JDBC的主要功能是管理存放在表中的数据,所以它定义了一系列与关系数据库进行交互的类和接口,如数据库连接、SQL 语句、结果集和元数据等。
  一般来说,JDBC 的工作主要分为3个步骤:首先与某一关系数据库建立连接;然后向数据库发送SQL 语句,实现对数据库的操作;最后取得处理结果。
  实现上述JDBC基本功能的3个步骤程序示例如下:
  ...........
  connection con=DriveManager.GetConnection("jdbc:odbc: ghq,"root","password"):  
  //建立与数据库的连接
  Statement stmt=con.createstatement(); //建立语句对象
  ResultSet rs=stmt.executeQuery("SELECT a,b FROM Table")
   //运行SQL语句,返回数据库操作结果
  while (rs.next()){
   int x=getInt("a"); //获得数据库表记录a项的值
   string s=getstring("b"); //获得数据库表记录b项的值
  }
  .............
  JDBC 接口和驱动程序
  1.JDBC 接口
  JDBC提供的接口主要有两种,一种是面向一般应用程序开发人员的JDBC API,另一种是底层的JDBC Driver API,如图1所示。
   
  图1 使用JDBC的基本结构
  JDBC API是一系列抽象的接口,应用程序开发人员通过它可以编写访问数据库的Java应用程序。JDBC API中,抽象类的实现是由驱动程序开发商提供的。驱动程序实现了应用程序和某个数据库产品之间的接口,它的管理器则对应用程序和驱动程序之间的交互进行控制。JDBC API主要用来连接数据库和直接调用SQL命令,执行各种SQL语句。利用JDBC API可以执行一般的SQL语句、动态SQL语句,以及带IN和OUT参数的存储过程。
  
  JDBC中的驱动程序必须提供实现方法的接口。JDBC API被定义在java.sql包中,其中定义了JDBC API用到的所有类、接口和方法,主要的类和接口有:
  
  · DriverManager类——处理驱动程序的装入,为新的数据库连接提供支持。驱动程序要向该类注册后才能被使用。进行连接时,该类根据JDBC URL选择匹配的驱动程序。
  
  · java.sql.Driver接口——驱动程序接口,负责确认URL与驱动程序的匹配、建立到数据库的连接等,其中的方法需要有相应的驱动程序实现。
  
  · java.sql.Connection接口——表示到特定数据库的连接,其中的方法需要有相应的驱动程序实现。
  
  · java.sql.Statement接口——为SQL语句提供一个容器,包括执行SQL语句、取得查询结果等方法。此接口有两个子类型:
  (1)java.sql.PreparedStatement,用于执行预编译的SQL语句;
  (2)java.sql.CallableStatement,用于执行对一个数据库内嵌过程的调用。
  · java.sql.ResultSet接口——提供对结果集进行处理的手段。
  
  JDBC Driver API 是面向驱动程序开发商的接口。对于大多数数据库驱动程序来说,仅仅实现JDBC API提供的抽象类就可以了。也就是说每一个驱动程序都必须提供对于java.sql.Connection、java.sql.Statement、java .sql.PreparedStatement和java.sql.ResultSet等主要接口的实现方法。如果目标DBMS提供有OUT参数的内嵌过程,那么还必须提供java.sql.CallableStatement 接口。每个数据库驱动程序必须提供一个java.sql.Driver类,使得系统可以由 java.sql.DriverManager来管理。
  一个典型的驱动程序是在ODBC上提供对JDBC的实现接口,从而提供与ODBC接口的JDBC-ODBC桥,就像前面图1所显示的。由于JDBC放在ODBC之后,所以实现起来简单而且高效。
  2. JDBC 驱动程序
  JDBC驱动程序可以分为下面四种类型,分别适用于不同的场合,如图2所示。
   
  图2 驱动程序的4种类型
  · JDBC-ODBC桥驱动程序
  Sun产品通过ODBC驱动程序提供JDBC的存取,即经过ODBC 驱动程序访问数据库。在大多数情况下,ODBC二进制代码必须在每个使用该数据库驱动程序的客户端安装,所以这种驱动程序主要适用于公司内部网络,或者在三层结构中用Java编写的应用服务器代码。
  下面以Access数据库为例来具体说明,代码如下:
  ..........
  Class.forname(" sun.jdbc.odbc.JdbcOdbcDriver ");//调用JDBC-ODBC 驱动程序
  Connection con=DriverManager.getConnection("jdbc:odbc:temp,"sa","");
  //与数据库连接,"temp" 是配置Access数据库ODBC建立的数据源,sa 为用户名,口令为空
  Statement s=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.
  CONCUR_READ_ONLY);
  //创建Statement
  ResultSet rs=s.executeQuery("select * from test");
  //执行查询结果存放在ResultSet中, test是一个数据库表
  ..........
  · 本机应用编程接口的Java 驱动程序
  此类驱动程序转换JDBC调用客户端的、针对特定数据库系统的API,如Oracle、Sybase、Informix、DB2 或其它的 DBMS,像桥驱动程序一样,这种类型的驱动程序要求在每一个客户机上安装一些二进制代码。
  
  下面以IBM DB2 数据库为例来具体说明:
  ..........
  Class.forname(" COM.ibm.db2.jdbc.app. DB2Driver");//调用JDBC 本地驱动程序
  String db="test";//数据库名
  String URL="jdbc:db2:"+db;//URL 值
  String userid="adm";//数据库用户名
  String password="abc123";//数据库用户密码
  Connection con=DriverManager.getConnection(URL,userid,password);//与数据库连接
  Statement s=con.createStatement();//创建Statement
  ...........
  · 数据库中间件的纯Java 驱动程序
  
  此类驱动程序将JDBC调用转换成为中间件供应商的协议,然后通过中间件服务器转换成为DBMS协议。网络服务器中间件可以连接所有Java客户端到各种不同的数据库,但是特定的协议取决于供应商。通常这种方式是JDBC最方便的选择,提供商可为Internet用户提供产品套件。为了使这些产品能够支持Internet访问,他们还必须处理安全、防火墙穿越等需求。各个提供商正在增加JDBC驱动程序到他们现存的中间件产品中。
  下面以Oracle 数据库为例来具体说明:
  ...........
  DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
  //在Oracle中注册驱动程序,Driver Manager类允许动态地注册驱动程序
  Connection conn=
  DriverManager.getConnection("jdbc:oracle:thin:@ghq:1521:book","system","manager");
  /**
  * 将连接字符串传递给这个方法以建立到数据库的连接。连接字符串中的第一个值指明thin JDBC 驱动程序,
  * (用的是@符号)连接一个名为ghq的Hostname(或连接IP地址),端口是1521,数据库的Oracle
  SID是book,连* 接的用户名是system,口令是manager。
  **/
  Statement statemt=conn.createStatement();//创建一个SQL语句对象
  ResultSet rsltset=statemt.executeQuery("SELECT USERNAME FROM book");
  //执行查询结果存放在ResultSet中,book是一个数据库表
  ............
  · 直接连接数据库的纯Java 驱动程序
  这种驱动程序是本地协议的纯Java驱动程序,它转换JDBC调用由DBMS直接使用的网络协议。这种方式允许从客户机到DBMS服务器的直接调用,是Intranet访问的一种行之有效的解决方案。因为这些协议多数是专用的,因此数据库提供商将成为这种驱动程序的主要来源。
  
  下面以MS SQL 数据库为例来具体说明:
  
  后台数据库采用MS SQL Server7.0,相应的JDBC Driver为MS SQL Server特定的驱动程序com.inet.tds.TdsDriver(可以在网上下载),Java版本是1.2.x,JDBC 版本是2.0 。
  
  .........
  String url="jdbc:jdbc:inetdae:localHost:1433";//inetdae是驱动程序子协议名
  String login="sa";
  String password="";
  Class.forName("com.inet.tds.TdsDriver");
  Connection con=DriverManager.getConnection(url,login,password);
  Statement s=con.createStatement();
  ResultSet rs=s.executeQuery("select * from table");
  ..........
  JDBC 使用方法
  目前,Java使用最多的Applet是Web文件的一个组成部分。其中有数据库存取的Applet和能够使用JDBC来接触数据库的Applet。
  Java Applet 通过JDBC 访问数据库的工作流程可以用图3 来描述。
    
  图3 Applet通过JDBC访问数据库的工作流程
  首先Web 浏览器从Web 服务器中下载嵌有Applet 的HTML 页面,解释并执行Applet 字节码。当执行到有访问数据库的Java 语句时,Applet 直接将相应的Java 命令发送给装在服务器上的JDBC。通过JDBC 向后端数据库发出SQL 请求,然后数据库将处理结果通过JDBC 直接返回给Applet。Applet 通过JDBC 访问数据库的方法是一种Web 数据库访问的实现方案。
相关内容
赞助商链接