一、建立表,并填充数据:
建表的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 ' 选用标志' ;
(
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' );
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>
―――――――――――――――――――――――――――
注意:Oracle和DB2 JDBC连接的URL有较大差别,其中Oracle中url="jdbc:oracle:thin:@192.168.3.12:1521:orcl"的orcl表示数据库SID,一个SID下面的可以有多个用户,每个用户对应自己的数据库。DB2中url="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,如需转载请自行联系原作者