java 数据库字段_JAVA如何获得数据库的字段及字段类型
標簽:
Java獲取數據庫的表中各字段的字段名,代碼如下:
import?java.sql.Connection;
import?java.sql.DriverManager;
import?java.sql.ResultSet;
import?java.sql.PreparedStatement;
import?java.sql.ResultSetMetaData;
import?java.sql.SQLException;
public?class?TestDemo?{
public?static?Connection?getConnection()?{
Connection?conn?=?null;
try?{
Class.forName("com.mysql.jdbc.Driver");
String?url?=?"jdbc:mysql://數據庫IP地址:3306/數據庫名稱";
String?user?=?"數據庫用戶名";
String?pass?=?"數據庫用戶密碼";
conn?=?DriverManager.getConnection(url,?user,?pass);
}?catch?(ClassNotFoundException?e)?{
e.printStackTrace();
}?catch?(SQLException?e)?{
e.printStackTrace();
}
return?conn;
}
public?static?void?main(String[]?args)?{
Connection?conn?=?getConnection();
String?sql?=?"select?*?from?AccessType";
PreparedStatement?stmt;
try?{
stmt?=?conn.prepareStatement(sql);
ResultSet?rs?=?stmt.executeQuery(sql);
ResultSetMetaData?data?=?rs.getMetaData();
for?(int?i?=?1;?i?<=?data.getColumnCount();?i++)?{
//?獲得所有列的數目及實際列數
int?columnCount?=?data.getColumnCount();
//?獲得指定列的列名
String?columnName?=?data.getColumnName(i);
//?獲得指定列的列值
int?columnType?=?data.getColumnType(i);
//?獲得指定列的數據類型名
String?columnTypeName?=?data.getColumnTypeName(i);
//?所在的Catalog名字
String?catalogName?=?data.getCatalogName(i);
//?對應數據類型的類
String?columnClassName?=?data.getColumnClassName(i);
//?在數據庫中類型的最大字符個數
int?columnDisplaySize?=?data.getColumnDisplaySize(i);
//?默認的列的標題
String?columnLabel?=?data.getColumnLabel(i);
//?獲得列的模式
String?schemaName?=?data.getSchemaName(i);
//?某列類型的精確度(類型的長度)
int?precision?=?data.getPrecision(i);
//?小數點后的位數
int?scale?=?data.getScale(i);
//?獲取某列對應的表名
String?tableName?=?data.getTableName(i);
//?是否自動遞增
boolean?isAutoInctement?=?data.isAutoIncrement(i);
//?在數據庫中是否為貨幣型
boolean?isCurrency?=?data.isCurrency(i);
//?是否為空
int?isNullable?=?data.isNullable(i);
//?是否為只讀
boolean?isReadOnly?=?data.isReadOnly(i);
//?能否出現在where中
boolean?isSearchable?=?data.isSearchable(i);
System.out.println(columnCount);
System.out.println("獲得列"?+?i?+?"的字段名稱:"?+?columnName);
System.out.println("獲得列"?+?i?+?"的類型,返回SqlType中的編號:"+?columnType);
System.out.println("獲得列"?+?i?+?"的數據類型名:"?+?columnTypeName);
System.out.println("獲得列"?+?i?+?"所在的Catalog名字:"+?catalogName);
System.out.println("獲得列"?+?i?+?"對應數據類型的類:"+?columnClassName);
System.out.println("獲得列"?+?i?+?"在數據庫中類型的最大字符個數:"+?columnDisplaySize);
System.out.println("獲得列"?+?i?+?"的默認的列的標題:"?+?columnLabel);
System.out.println("獲得列"?+?i?+?"的模式:"?+?schemaName);
System.out.println("獲得列"?+?i?+?"類型的精確度(類型的長度):"?+?precision);
System.out.println("獲得列"?+?i?+?"小數點后的位數:"?+?scale);
System.out.println("獲得列"?+?i?+?"對應的表名:"?+?tableName);
System.out.println("獲得列"?+?i?+?"是否自動遞增:"?+?isAutoInctement);
System.out.println("獲得列"?+?i?+?"在數據庫中是否為貨幣型:"?+?isCurrency);
System.out.println("獲得列"?+?i?+?"是否為空:"?+?isNullable);
System.out.println("獲得列"?+?i?+?"是否為只讀:"?+?isReadOnly);
System.out.println("獲得列"?+?i?+?"能否出現在where中:"+?isSearchable);
}
}?catch?(SQLException?e)?{
e.printStackTrace();
}
}
}
實際應用中也可以用case子句根據不同字段類型做不同處理:
switch(columnType){
case Types.NUMERIC :classFactory.setprop(entity, columnName, rs.getLong(i));
break;
case Types.VARCHAR:classFactory.setprop(entity, columnName, rs.getString(i));
break;
case Types.DATE:classFactory.setprop(entity, columnName, rs.getDate(i));
break;
case Types.TIMESTAMP:classFactory.setprop(entity, columnName, rs.getTimestamp(i));
break;
case Types.TIME:classFactory.setprop(entity, columnName, rs.getTime(i));
break;
case Types.BOOLEAN:classFactory.setprop(entity, columnName, rs.getBoolean(i));
break;
case Types.ARRAY :classFactory.setprop(entity, columnName, rs.getArray(i));
break;
case Types.BIGINT :classFactory.setprop(entity, columnName, rs.getInt(i));
break;
case Types.BINARY:classFactory.setprop(entity, columnName, rs.getBinaryStream(i));
break;
case Types.BLOB:classFactory.setprop(entity, columnName, rs.getBlob(i) );
break;
case Types.CHAR:classFactory.setprop(entity, columnName, rs.getString(i));
break;
case Types.INTEGER:classFactory.setprop(entity, columnName, rs.getInt(i));
break;
case Types.DOUBLE :classFactory.setprop(entity, columnName,rs.getDouble(i));
break;
case Types.FLOAT:classFactory.setprop(entity, columnName, rs.getFloat(i));
break;
case Types.SMALLINT:classFactory.setprop(entity, columnName, rs.getInt(i));
break;
case Types.DECIMAL:classFactory.setprop(entity, columnName, rs.getLong(i));
break;
default:classFactory.setprop(entity, columnName, rs.getObject(i));
break;
}
標簽:
總結
以上是生活随笔為你收集整理的java 数据库字段_JAVA如何获得数据库的字段及字段类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10怎么检查更新 win10如何查
- 下一篇: java class 是否相等_Java