JAVA 获取数据库中表的结构

package conn;
import java.sql.DriverManager;
import java.sql.ResultSet;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ResultSetMetaData;
import com.mysql.jdbc.Statement;
public class table {
private Connection connection;  
private Statement statement;  
public void initConnection(String driverClass, String dbUrl, String username, String password) throws Exception {  
    Class.forName(driverClass);  
    this.connection = (Connection) DriverManager.getConnection(dbUrl, username, password);  
    this.statement = (Statement) this.connection.createStatement();  
}  
public ResultSetMetaData getMetaDataFromTable(String tableName) throws Exception {  
    String sql = "SELECT * FROM " + tableName + " WHERE 1 != 1";  //.toUpperCase()
    ResultSet rs = this.statement.executeQuery(sql);  
    return (ResultSetMetaData) rs.getMetaData();  
}   
public void displayMetaData(ResultSetMetaData metaData) throws Exception {  
    StringBuffer sb = new StringBuffer();  
    for (int i = 0; i < metaData.getColumnCount(); i++) {  
        sb.append("\n");  
        sb.append(metaData.getTableName(i + 1));  
        sb.append(".");  
        sb.append(metaData.getColumnName(i + 1));  
        sb.append("|");  
        sb.append(metaData.getColumnType(i + 1));  
        sb.append("|");  
        sb.append(metaData.getColumnTypeName(i + 1));  
        sb.append("|");  
        sb.append(metaData.getColumnDisplaySize(i + 1));  
        sb.append("|");  
    }  
    System.out.println(sb.toString());  

public static void main(String[] args) throws Exception{
    table a=new table();
    a.initConnection("com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1:3306/test", "root", "888888");
    ResultSetMetaData metaData=a.getMetaDataFromTable("home");
    a.displayMetaData(metaData);
    
}

}

结果:

home.id|4|INT|5|
home.City|12|VARCHAR|10|
home.uid|4|INT|5|

注意:
ResultSetMetaData 对象可以用于查找 ResultSet 中的列的类型和特性。
方法索引 
getCatalogName(int) 
获得列的表的目录名。 
getColumnCount() 
获得 ResultSet 中的列数。 
getColumnDisplaySize(int) 
获得列的正常的最大字符宽度。 
getColumnLabel(int) 
获得打印输出和显示的建议列标题。 
getColumnName(int) 
获得列名。 
getColumnType(int) 
获得一个列的 SQL 类型。 
getColumnTypeName(int) 
获得一个列的数据源特定的类型名。 
getPrecision(int) 
获得一个列的十进制数字的位数。 
getScale(int) 
获得一个列的十进制小数点右面数字的位数。 
getSchemaName(int) 
获得一个列的表的模式。 
getTableName(int) 
获得列的表名。 
isAutoIncrement(int) 
列是否自动计数,因此它是只读的。 
isCaseSensitive(int) 
列是否区分大小写。 
isCurrency(int) 
列是否是通用的。 
isDefinitelyWritable(int) 
对列的写操作是否一定成功。 
isNullable(int) 
在该列中是否可以放一个 NULL 值。 
isReadOnly(int) 
列是否是不可写的。 
isSearchable(int) 
该列是否是可以查询的。 
isSigned(int) 
该列是否是有符号数。 
isWritable(int) 
对该列的写操作是否会成功。

http://blog.csdn.net/ycb1689/article/details/7530389

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值