当前位置: 首页 > 图文教程 > 网络编程 > JSP > Servlet开发中JDBC的高级应用

JSP
Hibernate save() saveorupdate()的用法
hibernate更新数据方法小结
jsp 复选框使用方法
JSP单选按钮验证、下拉框验证、复选框验证实现代码
jsp Hibernate批量更新和批量删除处理代码
JSP彩色验证码的实例代码
[J2SE]Java中3DES加密解密调用示例
【算法】扑克发牌算法实现
java易懂易用的MD5加密(可直接运行) (1)
java 易懂易用的MD5加密(可直接运行)(2)
java 截取字符串(判断汉字)
java 中文字符串数组按照音序排列
JAVA 18位身份证号码校验码的算法
jsp JFreeChart使用心得与例子
Hibernate 查询方式总结
java struts常见错误以及原因分析
Java 获取URL的内容
JAVA (Jsp)利用Google的Translate开发API的代码
java SOAPHEADER的web service
JSP与JS交互问题 值传递

JSP 中的 Servlet开发中JDBC的高级应用


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-02   浏览: 66 ::
收藏到网摘: n/a

 

  连结数据库

  JDBC使用数据库URL来说明数据库驱动程序。数据库URL类似于通用的URL,但SUN 在定义时作了一点简化,其语法如下:

  Jdbc::[node]/[database]

  其中子协议(subprotocal)定义驱动程序类型,node提供网络数据库的位置和端口号,后面跟可选的参数。例如:

String url=”jdbc:inetdae:myserver:1433?language=us-english&sql7=true” 

  表示采用inetdae驱动程序连接1433端口上的myserver数据库服务器,选择语言为美国英语,数据库的版本是mssql server 7.0。

  java应用通过指定DriverManager装入一个驱动程序类。语法如下:

Class.forName(“”);

  或  

Class.forName(“”).newInstance(); 

  然后,DriverManager创建一个特定的连接:

Connection connection=DriverManager.getConnection(url,login,password); 

  Connection接口通过指定数据库位置,登录名和密码连接数据库。Connection接口创建一个Statement实例执行需要的查询:

Statement stmt=connection.createStatement(); 

  Statement具有各种方法(API),如executeQuery,execute等可以返回查询的结果集。结果集是一个ResultSet对象。具体的可以通过jdbc开发文档查看。可以sun的站点上下载

  下面例子来说明:

import java.sql.*; // 输入JDBC package

String url = "jdbc:inetdae:myserver:1433";// 主机名和端口
String login = "user";// 登录名
String password = "";// 密码

try {
  DriverManager.setLogStream(System.out); file://为显示一些的信息打开一个流
  file://调用驱动程序,其名字为com.inet.tds.TdsDriver
  file://Class.forName("com.inet.tds.TdsDriver");
  file://设置超时
  DriverManager.setLoginTimeout(10);
  file://打开一个连接
  Connection connection = DriverManager.getConnection(url,login,password);
  file://得到数据库驱动程序版本

   DatabaseMetaData conMD = connection.getMetaData();
   System.out.println("Driver Name:\t" + conMD.getDriverName());
   System.out.println("Driver Version:\t" + conMD.getDriverVersion());

  file://选择数据库
  connection.setCatalog( "MyDatabase");

  file://创建Statement

  Statement st = connection.createStatement();

  file://执行查询

  ResultSet rs = st.executeQuery("SELECT * FROM mytable");

  file://取得结果,输出到屏幕

  while (rs.next()){
     for(int j=1; j<=rs.getMetaData().getColumnCount(); j++){
      System.out.print( rs.getObject(j)+"\t");
     }
   System.out.println();
  }

  file://关闭对象
  st.close();
    connection.close();
  } catch(Exception e) {
    e.printStackTrace();
  } 
  建立连结池

  一个动态的网站频繁地从数据库中取得数据来构成html页面。每一次请求一个页面都会发生数据库操作。但连接数据库却是一个需要消耗大量时间的工作,因为请求连接需要建立通讯,分配资源,进行权限认证。这些工作很少能在一两秒内完成。所以,建立一个连接,然后再后续的查询中都使用此连接会大大地提高性能。因为servlet可以在不同的请求间保持状态,因此采用数据库连接池是一个直接的解决方案。

  Servlet在服务器的进程空间中驻留,可以方便而持久地维护数据库连接。接下来,我们介绍一个完整的连接池的实现。在实现中,有一个连接池管理器管理连接池对象,其中每一个连接池保持一组数据库连接对象,这些对象可为任何servlet所使用。

  一、数据库连接池类 DBConnectionPool,提供如下的方法:

  1、从池中取得一个打开的连接;

  2、将一个连接返回池中;

  3、在关闭时释放所有的资源,并关闭所有的连接。

  另外,DBConnectionPool还处理连接失败,比如超时,通讯失败等错误,并且根据预定义的参数限制池中的连接数。

  二、管理者类,DBConnetionManager,是一个容器将连接池封装在内,并管理所有的连接池。它的方法有:

  1、 调用和注册所有的jdbc驱动程序;

  2、 根据参数表创建DBConnectionPool对象;

  3、 映射连接池的名字和DBConnectionPool实例;

  4、 当所有的连接客户退出后,关闭全部连接池。

  这些类的实现,以及如何在servlet中使用连接池的应用在随后的文章中讲解

  DBConnectionPool类代表一个由url标识的数据库连接池。前面,我们已经提到,jdbc的url