当前位置:  技术问答>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分!衷心感谢!


|
//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) {
      //...
    }
}

|
DatabaseMetaData md = connection.getMetaData();
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;
  }

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 哪里有jdbcdriver下载,告诉正确地址就给分。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3