日期:2014-05-18  浏览次数:20550 次

请问如何获取数据表的字段名称?

请问在 JSP 如何获取数据表的所有字段名称(库中的所有表名)?

数据库是MYSQL的》》》》

------解决方案--------------------
括号外的明白,括号里的没明白。前者是最简单的jdbc,翻翻最基本的书就会了
1得到连接2CRUD3得到结果集4断开连接
mysql,记得找到jar for mysql-jdbc
------解决方案--------------------
desc 表名
------解决方案--------------------
使用Connection的getMetaData方法,获得DatabaseMetaData对象,
再使用getTables和getColumns返回ResultSet结果集,那些就是你
需要的。
------解决方案--------------------
5楼的是正解!
------解决方案--------------------
使用Connection的getMetaData方法,获得DatabaseMetaData对象, 
再使用getTables和getColumns返回ResultSet结果集,那些就是你 
需要的。

------------------
正解了,还是火龙果牛啊
------解决方案--------------------
楼主是不是参加过一个公司的面试~
我上次去一公司面试,做的和你的帖子一样的
------解决方案--------------------
ResultSet Res1=comm.executeQuery();
ResultSetMetaData rm=Res1.getMetaData();
然后对rm进行操作就可以了
------解决方案--------------------
学习
------解决方案--------------------
如果你再JSP中直接插入scriplet,则可以在<% %>之间插入java代码,方法和在java里面一样,就是
ResultSetMetaData rm = rs.getMetaData(); //rs是你获取的数据集
如果你不用scriplet,则可以用自定义标签或JSTL,如果用自定义标签,就要自己定义获取的方法,只要把类里的方法换成static类型的,再在配置文件里配置,比如如下的配置:
标记库描述文件.tld
<?xml version="1.0" encoding="utf-8"?>
<taglib>
<tlib-version>1.2</tlib-version>
<uri>dicefunction</uri>
<function>
<name>getColumnName</name>
<function-class>com.Column</function-class>
<function-signature>
String[] getColumnName()
</function-signature>
</function>
</taglib>

你的类如下:
package com;
public class Column {
.........
public static String[] getColumnName() {
con = DBUtil.getConnection(); //假设已经获得数据库连接了
String sql = "select * from [table]";
PreparedStatement pst = con.preparedStatement(sql);
ResultSet rs = pst.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
String[] s = new String[numberOfColumns];
for(int i = 0; i < numberOfColumns; i++) {
s[i] = rsmd.getColumnName(i+1); //因为数据库字段的索引从1开始,而非0开始,所以用i+1
}
return s;
}
.........
}

你的JSP中可以这么写:
<%@ taglib prifix="mine" uri="dicefunction"%> <!--这里uri属性就是你配置文件.tld中的uri标签中的内容-->
<html><body>
${mine:getColumnName()}
</body></html>

注意:这里会输出一个String数组的toString()内容,可以自己覆盖toString()方法!
------解决方案--------------------
1:获取当前中的所有用户表

SQL code
select Name from sysobjects where xtype='u' and status>=0

------解决方案--------------------
谢谢楼上的 。。。一环扣一环的问题全来了。。。

con.getMetaData().getTables(null,null,"",null); 

里面的参数是什么意思啊。。。如果要用Java创建库及建表是不是直接用java运行SQL建库建表命令就可以了???