怎么用java读取数据库表结构?(比如有表名,得到该表的字段名,字段类型,好像DatabaseMetaData可以得到)

high_land 2006-11-13 09:37:15
怎么用java读取数据库表结构?
比如:有表名,得到该表的字段名,字段类型。
好像DatabaseMetaData可以得到,但是我没有找到例子。
最好sql server 2000 和 Oracle 写一个例子?
...全文
1237 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
数据分析小兵 2006-11-19
  • 打赏
  • 举报
回复
一学为主
liqian008 2006-11-19
  • 打赏
  • 举报
回复
只知道metaData可以实现,不知道还有这么多讲究,学习了
ztc16627 2006-11-16
  • 打赏
  • 举报
回复
如果需要得到的信息比较多的话,不要用MetaData
各种DBMS中都有系统表,有一些系统表会详细记录
各个表的表名、表结构(表中的列名、列类型...),
所以可以直接查这些表,当然,你的权限要够
LexChen 2006-11-16
  • 打赏
  • 举报
回复
其实JDBC驱动的MetaData并不是每一个都实现的很好,权限购的话楼上正解,比如Oracle就提供了很多非常方便的视图,呵呵
high_land 2006-11-14
  • 打赏
  • 举报
回复
sql server 2000 和 Oracle 两个都能得到中文名吗?
high_land 2006-11-14
  • 打赏
  • 举报
回复
除了得到字段名,类型。能不能得到字段的中文名?中文名士该字段的解释。
例如:知道tabel名字是“man_info”
得到field名是“manId,name,sex...等”
得到field中文名是“男人ID,姓名,性别....等”
得到field类型名士“NUMERIC,VARCHAR,NUMERIC....等”


high_land 2006-11-14
  • 打赏
  • 举报
回复
还有能得到表的解释吗?
hbwhwang 2006-11-13
  • 打赏
  • 举报
回复
是ResultSetMetaData,不是DatabaseMetaData
混沌骑士 2006-11-13
  • 打赏
  • 举报
回复
mysql的例子 其他数据库 改一下driver和url即可

Connection connection = null;
PreparedStatement pstmt = null;
ResultSetMetaData rsmd = null;
try {
Class.forName("org.gjt.mm.mysql.Driver");
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/PIM", "root", "smyl");
pstmt = connection.prepareStatement("select * from sys_user");
rsmd = pstmt.getMetaData();
for (int i = 1; i < rsmd.getColumnCount() + 1; i++) {
System.out.println(rsmd.getColumnName(i));
}
}
catch (ClassNotFoundException cnfex) {
cnfex.printStackTrace();
}
catch (SQLException sqlex) {
sqlex.printStackTrace();
}
bigelf 2006-11-13
  • 打赏
  • 举报
回复
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.io.*"%>
<%!
String typeToString(int i)
{
String ret="";
switch(i)
{
case(1):ret="CHAR";break;
case(2):ret="NUMERIC";break;
case(3):ret="DECIMAL";break;
case(4):ret="INTEGER";break;
case(5):ret="SMALLINT";break;
case(6):ret="FLOAT";break;
case(8):ret="DOUBLE";break;
case(12):ret="VARCHAR";break;
case(91):ret="DATE";break;
default:ret="other";
}
return ret;
}
%>
<%!
String getCol(ResultSet rst,int type,int colNum)throws Exception
{
String ret="";
switch(type)
{
case(1):ret=rst.getString(colNum);break;
case(4):ret=String.valueOf(rst.getInt(colNum));break;
case(5):ret=String.valueOf(rst.getInt(colNum));break;
case(6):ret=String.valueOf(rst.getFloat(colNum));break;
case(8):ret=String.valueOf(rst.getDouble(colNum));break;
case(12):ret=rst.getString(colNum);break;
default:ret="not know";
}
return trans(ret);
}
%>
<%! String trans(String chi)
{
String result = null;
byte temp [];
try
{
temp=chi.getBytes("iso-8859-1");
result = new String(temp);
}
catch(UnsupportedEncodingException e)
{
System.out.println (e.toString());
}
return result;
}
%>
<html>
<body>
<center>
<html>
<body>
数据库动态代理v0.5b:<hr>
<form action="proxy.jsp" method=get>
<table><tr><td>数据库的名字:<input type=text name=database></td>
<td>表的名字:<input type=text name=table></td></tr>
<tr> <td colspan=2><input type=submit value=提交></td></tr>
</table>
</form>
<%
String database=(String)request.getParameter("database");
String table=(String)request.getParameter("table");
%>
<table border=1>
<%
try
{

//装载驱动程序
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

//创建连接
Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433","bn","bn");

Statement stmt=con.createStatement();

ResultSet rst=stmt.executeQuery("use "+database+";select * from "+table);
ResultSetMetaData meta=rst.getMetaData() ;
int col=meta.getColumnCount();
out.println("表"+table+"共有:"+col+"个字段,这些字段是:<br>");
out.println("<tr>");
for(int i=1;i<col+1;i++)
{
out.println("<td>字段名:");
out.println(meta.getColumnName(i));
out.println("类型: ");
out.println(typeToString(meta.getColumnType(i)));
out.println("</td>");
}
out.println("</tr>");

while(rst.next())
{
out.println("<tr>");
for(int i=1;i<col+1;i++)
{
out.println("<td>"+getCol(rst,meta.getColumnType(i),i)+"</td>");
}
out.println("</tr>");
}
//关闭连接、释放资源
rst.close();
stmt.close();
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
%>
</table>
<center>
</body>
</html>


jsp的例子

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧