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

JSP
搭建Eclipse+MyEclipse开发环境
卖jsp编程技巧的那个垃圾的所有实例的答案全部已收集,现将他人收集的实例答案公布出来,大家鉴赏!
一个jsp+AJAX评论系统
JSP 多个文件打包下载代码
JSP 动态树的实现
jsp 重复提交问题
J2ME/J2EE实现用户登录交互 实现代码
访问JSP文件或者Servlet文件时提示下载的解决方法
JSP EL表达式详细介绍
JSP 报表打印的一种简单解决方案
jsp 自定义标签实例
AJAX自学练习 无刷新从数据库后台取数据显示
AJAX 自学练习 请求与显示
AJAX 自学练习 无刷新提交并修改数据库数据并显示
jsp 文件上传浏览,支持ie6,ie7,ie8
JSP application(return String)用法详例
jsp form表单方法示例
JSP request(return String)用法详例
JSP forward用法分析实例代码分析
JSP JavaBean的setProperty属性

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-02   浏览: 59 ::
收藏到网摘: 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