服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 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所示。
   java网络数据库编程及其应用(图一)
  图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所示。
   java网络数据库编程及其应用(图二)
  图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 来描述。
   java网络数据库编程及其应用(图三) 
  图3 applet通过jdbc访问数据库的工作流程
  首先web 浏览器从web 服务器中下载嵌有applet 的html 页面,解释并执行applet 字节码。当执行到有访问数据库的java 语句时,applet 直接将相应的java 命令发送给装在服务器上的jdbc。通过jdbc 向后端数据库发出sql 请求,然后数据库将处理结果通过jdbc 直接返回给applet。applet 通过jdbc 访问数据库的方法是一种web 数据库访问的实现方案。

扫描关注微信公众号