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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

/**

* 取得一張表的結構信息

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

* @param conn?? 數據連接

* @param tableName??? 表名

* @return??表結構中列的存儲對象

* @throws SQLException

*/

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

TableInfo result = new TableInfo();

/**設置表名*/

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();//列名

//數據類型

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

//數據類型名稱

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

//精度,列的大小

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

//小數位數

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

//是否為空

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

//字段默認值

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();

/**設置主鍵*/

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 {

/** 主鍵標識 */

private boolean isKey;

/** 列名稱 */

private String name;

/** 數據類型 */

private int dataType;

/** 數據類型名稱 */

private String dataTypeName;

/** 自增標識 */

private boolean isAutoIncrement;

/** 精度 */

private int precision;

/** 是否為空*/

private int isNull;

/**小數位數 */

private int scale;

/**默認值 */

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("數據類型:" + getDataType() + "\n");

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

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

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

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

buf.append("小數位數:" + 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;

}

}

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。