日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java打印sql表_java程序获得SqlServer数据表的表结构

發(fā)布時間:2024/9/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java打印sql表_java程序获得SqlServer数据表的表结构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

/**

* 取得一張表的結(jié)構(gòu)信息

* 使用DatabaseMetaData與ResultSetMetaData結(jié)合的方式獲取全部屬性

* @param conn?? 數(shù)據(jù)連接

* @param tableName??? 表名

* @return??表結(jié)構(gòu)中列的存儲對象

* @throws SQLException

*/

public TableInfo getTableInfo(Connection conn,Statement st, String tableName) throws SQLException{

TableInfo result = new TableInfo();

/**設(shè)置表名*/

result.setTableName(tableName);

DatabaseMetaData dbmd = conn.getMetaData();

ResultSet rs = dbmd.getColumns(null, null, tableName.toUpperCase(), null);

/**判斷字段是否自增*/

String sql = "select * from " + tableName + " where 1=2";

ResultSet rst = conn.prepareStatement(sql).executeQuery();

ResultSetMetaData rsmd = rst.getMetaData();

int i=1;

while(rs.next()){

//列名稱

String columnName = rs.getString("COLUMN_NAME").toLowerCase();//列名

//數(shù)據(jù)類型

int dataType = rs.getInt("DATA_TYPE");//類型

//數(shù)據(jù)類型名稱

String dataTypeName = rs.getString("TYPE_NAME").toLowerCase();

//精度,列的大小

int precision = rs.getInt("COLUMN_SIZE");//精度

//小數(shù)位數(shù)

int scale = rs.getInt("DECIMAL_DIGITS");// 小數(shù)的位數(shù)

//是否為空

int isNull = rs.getInt("NULLABLE");//是否為空

//字段默認(rèn)值

String defaultValue = rs.getString("COLUMN_DEF");

//是否自增

boolean isAutoIncrement = rsmd.isAutoIncrement(i); //自增

ColumnInfo col = new ColumnInfo();

col.setName(columnName);

col.setDataType(dataType);

col.setDataTypeName(dataTypeName);

col.setPrecision(precision);

col.setScale(scale);

col.setIsNull(isNull);

col.setDefaultValue(defaultValue);

col.setAutoIncrement(isAutoIncrement);

result.setColInfo(columnName, col);

i++;

}

rs.close();

/**設(shè)置主鍵*/

rs = dbmd.getPrimaryKeys(null, null, tableName);

while(rs.next()){

result.setPrimaryKey(rs.getString("COLUMN_NAME").toLowerCase(), true);

System.out.println(rs.getString("COLUMN_NAME"));

}

rs.close();

return result;

}

/**

* 列信息存儲對象

* @author

*/

public class ColumnInfo {

/** 主鍵標(biāo)識 */

private boolean isKey;

/** 列名稱 */

private String name;

/** 數(shù)據(jù)類型 */

private int dataType;

/** 數(shù)據(jù)類型名稱 */

private String dataTypeName;

/** 自增標(biāo)識 */

private boolean isAutoIncrement;

/** 精度 */

private int precision;

/** 是否為空*/

private int isNull;

/**小數(shù)位數(shù) */

private int scale;

/**默認(rèn)值 */

private String defaultValue;

public boolean isKey() {

return isKey;

}

public void setKey(boolean isKey) {

this.isKey = isKey;

}

public String getDefaultValue() {

return defaultValue;

}

public void setDefaultValue(String defaultValue) {

if(null==(defaultValue)){

}else{

this.defaultValue = "'"+defaultValue+"'";

}

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getDataType() {

return dataType;

}

public void setDataType(int dataType) {

this.dataType = dataType;

}

public boolean isAutoIncrement() {

return isAutoIncrement;

}

public void setAutoIncrement(boolean isAutoIncrement) {

this.isAutoIncrement = isAutoIncrement;

}

public String getDataTypeName() {

return dataTypeName;

}

public void setDataTypeName(String dataTypeName) {

this.dataTypeName = dataTypeName;

}

public String toString(){

StringBuffer buf = new StringBuffer();

buf.append("-------------\n");

buf.append("字段名稱:" + getName() + "\n");

buf.append("數(shù)據(jù)類型:" + getDataType() + "\n");

buf.append("類型名稱:" + getDataTypeName() + "\n");

buf.append("主鍵:" + isKey() + "\n");

buf.append("自增:" + isAutoIncrement + "\n");

buf.append("為空:" + isNull + "\n");

buf.append("小數(shù)位數(shù):" + scale + "\n");

buf.append("精度:"+precision+"\n");

buf.append("初始值:"+defaultValue+"\n");

return buf.toString();

}

public int getPrecision() {

return precision;

}

public void setPrecision(int precision) {

this.precision = precision;

}

public int getIsNull() {

return isNull;

}

public void setIsNull(int isNull) {

this.isNull = isNull;

}

public int getScale() {

return scale;

}

public void setScale(int scale) {

this.scale = scale;

}

}

總結(jié)

以上是生活随笔為你收集整理的java打印sql表_java程序获得SqlServer数据表的表结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。