您的位置:首页 > 数据库

使用jsp脚本查看数据库的结构信息

2008-11-28 14:34 495 查看
下面是jsp中获取数据库的结构信息的脚本源码:

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="java.util.*" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=GB18030">

<title>查看数据库的结构信息</title>

</head>

<body>

<%
// 提示:我使用的是数据库连接池,其资源名为jdbc/db2007
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/db2007");
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
DatabaseMetaData dmd = null;
ResultSetMetaData rsmd = null;
Map tableMap=new HashMap();
try {
conn = ds.getConnection();
// 以下查询该连接中数据库有哪些数据表
dmd = conn.getMetaData();
String[] types = {"TABLE"};
rs=dmd.getTables(null,null,"%",types);
rsmd = rs.getMetaData();
int l = rsmd.getColumnCount();

out.print("<b>数据库表一览表</b><br>");

out.print("<table border=1 cellspacing=0 cellpadding=0>");

out.print("<tr>");
out.print("<td>序号</td>");
for (int i=1;i<=l;i++){
out.println("<td>"+rsmd.getColumnName(i)+"</td>");
}
out.print("</tr>");

int t=0;
String str1="";
int xh=0;
while (rs.next()){
out.print("<tr>");
xh++;
out.print("<td>"+xh+"</td>");
for (int i=1;i<=l;i++){
str1=rs.getString(i);
if (i==3) {
tableMap.put(t+"",str1);
t++;
}
out.println("<td>"+str1+"</td>");
}
out.print("</tr>");
}
out.print("</table>");

// 以下查询每一个表的字段信息

stmt = conn.createStatement();

for (int i=0;i<t;i++){
String s1=tableMap.get(i+"").toString();
if (s1.indexOf("=")>=0) continue;
if (s1.indexOf("$")>=0) continue;
try {
out.println("<b>第"+i+"表名:"+s1+"</b><br>");
rs=stmt.executeQuery("Select * from "+ s1 + " where 5<>5" ); //只需要返回表结构
rsmd=rs.getMetaData();
l=rsmd.getColumnCount();
out.println("<table border=1 cellspacing=0 cellpadding=0>");
out.println("<tr>");
out.println("<td>序号</td>");
out.println("<td>Name</td>");
out.println("<td>Type</td>");
out.println("<td>TypeName</td>");
out.println("<td>Label</td>");
out.println("<td>DisplaySize</td>");
out.println("<td>isAutoIncrement</td>");
out.println("<td>isNullable</td>");
out.println("</tr>");
for (int j=1; j<=l;j++){
out.println("<tr>");
out.print("<td>"+j+"</td>");
out.print("<td>"); out.print(rsmd.getColumnName(j)); out.print("</td>");
out.print("<td>"); out.print(rsmd.getColumnType(j)); out.print("</td>");
out.print("<td>"); out.print(rsmd.getColumnTypeName(j)); out.print("</td>");
out.print("<td>"); out.print(rsmd.getColumnLabel(j)); out.print("</td>");
out.print("<td>"); out.print(rsmd.getColumnDisplaySize(j)); out.print("</td>");
out.print("<td>"); out.print(rsmd.isAutoIncrement(j)); out.print("</td>");
out.print("<td>"); out.print(rsmd.isNullable(j)); out.print("</td>");
out.println("</tr>");
}
out.print("</table>");
} catch (Exception e) {
continue;
}
} //end of for

conn.close();
conn = null;
} catch (Exception e) {
out.print(e);
}

%>

</body>

</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐