网站中经常用到的是数据库中的记录,然而有的时候我们需要对数据库的表机构也要了解 怎么样用jsp来获取数据库表的结构呢.在java中提供了DatabaseMetaData和ResultSetMetaData两种类他可以帮助我们解决这个问题.示例为取得表的结构的一些常用方法.
1.数据库介绍 类型:mssql 数据库:pubs 表:employee 字段: emp_id fname minit
2.用下面的代码执行
代码片段: <% try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs","wzh","*****"); Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs=stmt.executeQuery("select * from employee"); ResultSetMetaData rsmd = rs.getMetaData(); String clmname="<tr><td>列名</td>"; String clmtype="<tr><td>类型</td>"; String clmsize="<tr><td>大小</td>"; String nulllog="<tr><td>null</td>"; String increase = "<tr><td>increase</td>"; for(int i=1;i<=rsmd.getColumnCount();i++) { clmname=clmname+"<td>"+rsmd.getColumnName(i)+"</td>"; clmtype=clmtype+"<td>"+rsmd.getColumnTypeName(i)+"</td>"; clmsize=clmsize+"<td>"+rsmd.getColumnDisplaySize(i)+"</td>"; nulllog = nulllog+"<td>"+rsmd.isNullable(i)+"</td>"; increase = increase+"<td>"+rsmd.isAutoIncrement(i)+"</td>"; } clmname=clmname+"</tr>"; clmtype=clmtype+"</tr>"; clmsize=clmsize+"</tr>"; out.println("<table width=100% border=1>"); out.println(clmname); out.println(clmtype); out.println(clmsize); out.println(nulllog); out.println(increase); out.println("</table>"); rs.close(); stmt.close(); con.close(); } catch(Exception e) { out.println(e); } %> |
3.执行结果 可以看到emploee的表的结构就展现在我们的眼前了. 4.代码解释
提示: rsmd.getColumnCount() 取得表中的列的总数 rsmd.getColumnName(i) 取得第i列的名称 rsmd.getColumnTypeName(i) 取得第i列的类型 rsmd.getColumnDisplaySize(i) 取得第i列的显示大小 rsmd.isNullable(i) 判断第i列是能否为空 rsmd.isAutoIncrement(i) 判断第i列是否为自动增长 |
|