当前位置: 技术问答>java相关
230分!关于JDBCDriver:如何从ResultSet对象中获得表名(tablename)?
来源: 互联网 发布时间:2015-08-22
本文导语: 我正忙于一个定制table组件的工作,需要从ResultSet对象中获得表名,方法如下: int column; ResultSetMetaData metaData = resultSet.getMetaData(); String tableName = metaData.getTableName(column); 虽然此方法没有错误,但得到的tableName却...
我正忙于一个定制table组件的工作,需要从ResultSet对象中获得表名,方法如下:
int column;
ResultSetMetaData metaData = resultSet.getMetaData();
String tableName = metaData.getTableName(column);
虽然此方法没有错误,但得到的tableName却是""。原因是JDBCDriver中没有真正实现getTableName()方法,我想,解决办法应该是:
1、寻找真正实现getTableName()的JDBCDriver;
2、自己改写JDBCDriver,实现getTableName()方法;
3、其他方式。
我使用的是Oracle8.17,其他的数据库的相关解决办法我也很感兴趣,你明白的,我想让自己的组件跨越数据库。
真正解决问题,再送200分!衷心感谢!
int column;
ResultSetMetaData metaData = resultSet.getMetaData();
String tableName = metaData.getTableName(column);
虽然此方法没有错误,但得到的tableName却是""。原因是JDBCDriver中没有真正实现getTableName()方法,我想,解决办法应该是:
1、寻找真正实现getTableName()的JDBCDriver;
2、自己改写JDBCDriver,实现getTableName()方法;
3、其他方式。
我使用的是Oracle8.17,其他的数据库的相关解决办法我也很感兴趣,你明白的,我想让自己的组件跨越数据库。
真正解决问题,再送200分!衷心感谢!
|
//set up a connection
Connection connection = ...
//set up a DatabaseMetaData
DatabaseMetaData dbData = connection.getMetaData();
//get ALL tables from this database
TreeSet tableNames = new TreeSet();
ResultSet tableSet = null;
String[] types = {"TABLE", "VIEW", "ALIAS", "SYNONYM"};
String userName = dbData.supportsSchemasInTableDefinitions() ? dbData.getUserName() : null;
tableSet = dbData.getTables(null, userName, null, types);
//return table name set
while (tableSet.next()) {
try {
String tableName = tableSet.getString("TABLE_NAME");
tableName = (tableName == null) ? null : tableName.toUpperCase();
String tableType = tableSet.getString("TABLE_TYPE");
tableType = (tableType == null) ? null : tableType.toUpperCase();
//only allow certain table types
if (tableType != null && !"TABLE".equals(tableType) && !"VIEW".equals(tableType) && !"ALIAS".equals(tableType) && !"SYNONYM".equals(tableType))
continue;
tableNames.add(tableName);
} catch (SQLException sqle) {
//...
}
}
Connection connection = ...
//set up a DatabaseMetaData
DatabaseMetaData dbData = connection.getMetaData();
//get ALL tables from this database
TreeSet tableNames = new TreeSet();
ResultSet tableSet = null;
String[] types = {"TABLE", "VIEW", "ALIAS", "SYNONYM"};
String userName = dbData.supportsSchemasInTableDefinitions() ? dbData.getUserName() : null;
tableSet = dbData.getTables(null, userName, null, types);
//return table name set
while (tableSet.next()) {
try {
String tableName = tableSet.getString("TABLE_NAME");
tableName = (tableName == null) ? null : tableName.toUpperCase();
String tableType = tableSet.getString("TABLE_TYPE");
tableType = (tableType == null) ? null : tableType.toUpperCase();
//only allow certain table types
if (tableType != null && !"TABLE".equals(tableType) && !"VIEW".equals(tableType) && !"ALIAS".equals(tableType) && !"SYNONYM".equals(tableType))
continue;
tableNames.add(tableName);
} catch (SQLException sqle) {
//...
}
}
|
DatabaseMetaData md = connection.getMetaData();
ResultSet rs = md.getTable(null, null, null, new String [] {"TABLE"});
这个结果集包含了数据库关于所有库表的信息。表名是第三个域,
用
while (rs.next())
{
tableName[i] = rs.getString(3);
i++;
}
可以得到所有的表名,这是《核心技术卷II》里关于获取表名的方法,应该是跨数据库的。
ResultSet rs = md.getTable(null, null, null, new String [] {"TABLE"});
这个结果集包含了数据库关于所有库表的信息。表名是第三个域,
用
while (rs.next())
{
tableName[i] = rs.getString(3);
i++;
}
可以得到所有的表名,这是《核心技术卷II》里关于获取表名的方法,应该是跨数据库的。
|
public Enumeration getTableName(){
Vector vector = new Vector();
try{
m_sta = m_con.createStatement();
m_rs = m_sta.executeQuery("select * from tab where tabtype ='TABLE'");
while(m_rs.next()){
vector.addElement("(表)"+m_rs.getString(1));
}
tname = vector.elements();
}
catch(Exception e){
e.printStackTrace();
}
return tname;
}
Vector vector = new Vector();
try{
m_sta = m_con.createStatement();
m_rs = m_sta.executeQuery("select * from tab where tabtype ='TABLE'");
while(m_rs.next()){
vector.addElement("(表)"+m_rs.getString(1));
}
tname = vector.elements();
}
catch(Exception e){
e.printStackTrace();
}
return tname;
}
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。