开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Tomcat5.5链接Oracle、DB2、MySQL数据源实现JSP下拉框的填充

简介:
+关注继续查看
一、建立表,并填充数据:
建表的Oracle SQL如下:
――――――――――――――――――
create table DM_HY
(
  HY_DM VARCHAR2(
6) not null,
  HY_MC VARCHAR2(
200) not null,
  MLBZ  CHAR(
1) not null,
  DLBZ  CHAR(
1) not null,
  ZLBZ  CHAR(
1) not null,
  XLBZ  CHAR(
1) not null,
  FQHY  VARCHAR2(
6),
  XYBZ  CHAR(
1) not null
);
-- Add comments to the table 
comment on table DM_HY
  is 
'行业代码表';
-- Add comments to the columns 
comment on column DM_HY.HY_DM
  is 
'行业代码';
comment on column DM_HY.HY_MC
  is 
'行业名称';
comment on column DM_HY.MLBZ
  is 
'门类标志';
comment on column DM_HY.DLBZ
  is 
'大类标志';
comment on column DM_HY.ZLBZ
  is 
'中类标志';
comment on column DM_HY.XLBZ
  is 
'小类标志';
comment on column DM_HY.FQHY
  is 
'父亲类型';
comment on column DM_HY.XYBZ
  is 
'选用标志';
 
插入数据:
insert into DM_HY (HY_DM, HY_MC, MLBZ, DLBZ, ZLBZ, XLBZ, FQHY, XYBZ)
values (
'01''农、林、牧、渔业''Y''N''N''N', null, 'Y');
insert into DM_HY (HY_DM, HY_MC, MLBZ, DLBZ, ZLBZ, XLBZ, FQHY, XYBZ)
values (
'010200''林业''N''Y''Y''Y''01''Y');
。。。。。。
二、配置数据源
配置方法:根据数据库类型修改apache-tomcat-5.5.20\conf下的context.xml内容为:
1、  Tomcat种的Oracle数据源
―――――――――――――――――――――――――――
<!-- The contents of this file will be loaded for each web application -->
<Context privileged='true'>
              <Resource name="zfvims/zfvimsds"
                      auth="Container"
                   type="javax.sql.DataSource"
                            driverClassName="oracle.jdbc.driver.OracleDriver"
                   url="jdbc:oracle:thin:@192.168.0. 2:1521: orcl"
                   username=" zfvims"
                   password="leizhimin"
                   maxIdle="30"
                   maxWait="10000"
                   maxActive="100"
                   removeAbandoned="true"
                            removeAbandonedTimeout="60"
                            logAbandoned="true"/>
</Context>
―――――――――――――――――――――――――――
 
2、  Tocmat中的DB2数据源
―――――――――――――――――――――――――――
<!-- The contents of this file will be loaded for each web application -->
<Context privileged='true'>
              <Resource name="zfvims/zfvimsds"
                      auth="Container"
                   type="javax.sql.DataSource"
                            driverClassName="com.ibm.db2.jcc.DB2Driver"
                   url="jdbc:db2: zfvims"
                   username=“zfvims”
                   password=" leizhimin"
                   maxIdle="30"
                   maxWait="10000"
                   maxActive="100"
                   removeAbandoned="true"
                            removeAbandonedTimeout="60"
                            logAbandoned="true"/>
</Context>
―――――――――――――――――――――――――――
 
3、  Tocmat中的MySQL数据源
―――――――――――――――――――――――――――
<!-- The contents of this file will be loaded for each web application -->
<Context privileged='true'>
              <Resource name="zfvims/zfvimsds"
                      auth="Container"
                   type="javax.sql.DataSource"
                            driverClassName=" com.mysql.jdbc.Driver "
                   url=" jdbc:mysql://192.168.0.2:3306/zfvims"
                   username=“zfvims”
                   password=" leizhimin"
                   maxIdle="30"
                   maxWait="10000"
                   maxActive="100"
                   removeAbandoned="true"
                            removeAbandonedTimeout="60"
                            logAbandoned="true"/>
</Context>
―――――――――――――――――――――――――――
 
注意OracleDB2 JDBC连接的URL有较大差别,其中Oracleurl="jdbc:oracle:thin:@192.168.3.12:1521:orcl"orcl表示数据库SID,一个SID下面的可以有多个用户,每个用户对应自己的数据库。DB2url="jdbc:db2:zfvims"其中的zfvims是数据库的别名;MySQL中的url=" jdbc:mysql://192.168.0.2:3306/zfvims"其中的zfvims却是数据库的实名。
三、写工具类
package com.zfvims.common.utils;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
 
/**
 * File Name:  PageComboxOptions.java
 * Created by: IntelliJ IDEA.
 * Copyright:  Copyright (c) 2003-2006
 * Author:      leizhimin
 * Modifier:    leizhimin
 * Date Time: 2006-11-29 8:58:42
 * Readme:   jsp页面中的选择控件(Combox)之选项列表获取工具类
 */
public final class PageComboxOptions {
    private static final Log log = LogFactory.getLog(PageComboxOptions.class);
    private static Connection conn;
    private static Statement stmt;
    private static ResultSet rs;
    //行业类别SQL
    private static final String SQL_HYLB = "select '<option value=\"' || t.hy_dm || '\">' || t.hy_dm || '-' || t.hy_mc || '</option>' from dm_hy t order by t.hy_dm";
 
    static {
        try {
            //建立数据库连接
            Context ctx = new InitialContext();
            DataSource ds = (DataSource) ctx.lookup("java:comp/env/zfvims/zfvimsds");
            conn = ds.getConnection();
        } catch (Exception e) {
            log.error("获取数据库链接出现错误,请检查PageComboxOptions.java和连接池的配置!");
            e.printStackTrace();
        }
    }
 
    /**
     * @return 获取行业类别下拉列表HTML
     */
    public static String getOptionsHYLB() {
        String optionHTML = "";
        try {
            conn.setAutoCommit(false);
            //创建一个JDBC声明
            stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
            //执行查询
            rs = stmt.executeQuery(SQL_HYLB);
            optionHTML = result2String(rs);
            //关闭数据库连结
            rs.close();
            stmt.close();
        } catch (SQLException e) {
            log.error("查询行业类别出错,请检查!");
            e.printStackTrace();
        }
        return optionHTML;
    }
 
    /**
     * @return 结果集的String组合串
     */
    private static String result2String(ResultSet rs) throws SQLException {
        String optionHTML = "";
        while (rs.next()) {
            optionHTML = optionHTML + rs.getString(1);
        }
        return optionHTML;
    }
}
 
说明:这个工具类会一直占用一个数据库连接,为所有需要展示代码表的页面服务。这比每次当页面有代码表需要展示的时候,调用后台方法获取一次数据库连接然后又返回到池更高效。尤其是当系统很庞大的时候,这种优势尤为明显。当然也可以将静态的获取连接的代码块做成一个静态方法,然后分别在每个方法中获取连接。这样实质上每次取出一个代码表,都要获取一次连接,效率也不高,并且每次都要取连接,关闭连接(归池),本人不推荐这种做法。
 
四、写测试页面
写一个测试页面,在页面中导入工具类PageComboxOptions,然后直接调用其静态方法获取展示需要的html字符串代码,测试页面代码如下:
testoption.jsp
――――――――――――――――――――――――――――――――
<%@ page import="com.zfvims.common.utils.PageComboxOptions"%>
<%--
  Created by IntelliJ IDEA.
  User: leizhimin
  Date: 2006-11-29
  Time: 11:19:02
--%>
<%@ page contentType="text/html;charset=GBK" language="java" %>
<html>
<head><title>Simple jsp page</title></head>
 
<body>
<form action="#" method="post">
    <table>
        <tr>
            <td>行业类型</td>
            <td >
                <select name="hylb">
                     <%=PageComboxOptions.getOptionsHYLB()%>
                </select>
                     </td>
        </tr>
    </table>
</form>
</body>
</html>
――――――――――――――――――――――――――――――――



本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/10950,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Oracle生产数据库insert插入较慢分析过程和解决办法
Oracle生产数据库insert插入较慢分析过程和解决办法
0 0
Oracle 19C RPM安装及创建非容器数据库
Oracle 19c rpm安装及创建非容器数据库
0 0
Jdbc连接Oracle数据库详细案例,占位符的使用
Jdbc连接Oracle数据库详细案例,占位符的使用
0 0
Oracle数据库的增、删、改,索引、视图以及序列的创建和销毁
Oracle数据库的增、删、改,索引、视图以及序列的创建和销毁
0 0
Oracle数据库的简单认识详细总结
Oracle数据库的简单认识详细总结
0 0
Oracle数据库 创建触发器和序列(上)
Oracle数据库 创建触发器和序列
0 0
Oracle 数据库删除某一行数据
Oracle 数据库删除某一行数据
0 0
PLSQL连接Oracle数据库详细教程
PLSQL连接Oracle数据库详细教程
0 0
Python连接Oracle数据库完美教程
Python连接Oracle数据库完美教程
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
EasyDBforOracle— 基于阿里云的Oracle最佳实践
立即下载
Oracle云上最佳实践
立即下载
迁移 ORACLE 最佳实践
立即下载