Sal*_*lah 7 java jdbc resultset
我需要在表中询问我的列jdbc类型,今天我循环抛出我的列,然后询问它的类型,请参阅下面的代码:
public int getColumnDataTypeFromDB(String columnName) {
int datatype = 0;
ResultSet columns = null;
try {
String schema =
getMetaDataCatalogName() != null
? getMetaDataCatalogName()
: getMetaDataSchemaName();
if (TableManagerFactory.isCatalogBasedDatabase()) {
columns =
getMetaData().getColumns(
schema,
null,
tableName,
columnName);
} else {
columns =
getMetaData().getColumns(
null,
schema,
tableName,
columnName);
}
// columns =
// getMetaData().getColumns(getMetaDataCatalogName(), getMetaDataSchemaName(), tableName, columnName);
if (columns.next()) {
datatype = columns.getInt("DATA_TYPE");
}
} catch (SQLException ex) {
Log.error(
this,
"Error while getting columns information: " + ex.getMessage(),
ex);
//return false;
} catch (DDLCreationException ex) {
Log.error(this, ex.getMessage());
} finally {
try {
if (columns != null) {
columns.close();
}
} catch (SQLException ex) {
Log.error(this, ex.getLocalizedMessage());
}
}
return datatype;
}
Run Code Online (Sandbox Code Playgroud)
我可以同时在这样的表中获取所有列元数据吗?如果是的话,我该怎么办?
Sha*_*med 19
使用jdbc ResultSetMetaData类可以获取表列的详细信息.
ResultSet res=stmt.executeQuery("select * from tableName where 1<0");
ResultSetMetaData rsmd=res.getMetaData();
rsmd.getColumnType(1);
rsmd.getColumnLabel(1);
rsmd.getColumnDisplaySize(1);
Run Code Online (Sandbox Code Playgroud)
的参数DatabaseMetaData.getColumns(..)应该是LIKE- 模式。因此,如果您想从表中获取所有列,您只需传递到"%"最后一个参数即可columnNamePattern:
getMetaData().getColumns(null, schema, tableName, "%");
Run Code Online (Sandbox Code Playgroud)
某些驱动程序(也)允许null此处,但并非所有驱动程序都这样做(JDBC 规范和 API 文档并不完全清楚此参数是否允许)
| 归档时间: |
|
| 查看次数: |
24923 次 |
| 最近记录: |