日期:2014-05-18  浏览次数:20587 次

获取了连接conn,如何获取这个连接下数据库中所有表的名字?
获取了连接conn,如何获取这个连接下数据库中所有表的名字?我的连接支持mssql,oracle,db2,mysql,sysbase。

代码示例,sql示例都可以,我在网上没有搜索到相关具体的信息,说的都是方向之类的,没有具体的示例,大家帮忙解决下。

------解决方案--------------------
select name from sysobjects where xtype='U'?
------解决方案--------------------
SQL code
rch_Answer
test1
user
Tb_Output
s
tt2
a
b
gz
ta
ms
item
tt3

------解决方案--------------------
select * from information_schema.columns where table_name='表名'

跟这个差不多吧,我再去找找!
------解决方案--------------------
sql server:
SQL code
select name from sysobjects where xtype='U'

------解决方案--------------------
Set Recordset = Conn.Execute("SELECT * FROM sysobjects WHERE xtype='U'")
------解决方案--------------------
从schema信息里读也可以.
------解决方案--------------------
select name from sysobjects where xtype='U'? 这个好像是mssql的,oracle的不支持!
------解决方案--------------------
select name from sysobjects where type='U'
------解决方案--------------------
oracle的: 

获取所有用户表:
SELECT TABLE_NAME FROM USER_ALL_TABLES;
获取所有表(包括系统)
SELECT TABLE_NAME FROM ALL_ALL_TABLES;

在网上查的。嘻嘻!
------解决方案--------------------
别的没有数据库,不好实践,就算啦!
------解决方案--------------------
select table_name from information_schema.tables where table_type='base table'
------解决方案--------------------
如果支持多种数据库的话,可以考虑利用jdbc来帮助解决,这样可以屏蔽掉很多的具体数据库细节。
Java code

    /**
     * 简要的显示一下
     * */
    public void showTables(){
        Connection conn = null;
        ResultSet rst = null;
        DatabaseMetaData dbmd = null;
        String[] types = {"TABLE"}; // 类型:表
        try{
            conn = ConnectionFactory.getConnection(); // 不同数据库返回不同的Connection
            dbmd = conn.getMetaData();
            // String catalog,String schemaPattern,String tableParten,String[] types
            // null 代表所有
            rst = dbmd.getTables(null,null ,null , types);
            while(rst.next()){
                System.out.println(rst.getString("TABLE_NAME"));
            }        
        }catch(SQLException sqle){
            sqle.printStackTrace();
        }
    }

------解决方案--------------------
conn = ConnectionFactory.getConnection(); // 不同数据库返回不同的Connection

中的ConnectionFactory从哪里来?
------解决方案--------------------
ConnectionFactory是哪个jar包的类?
------解决方案--------------------
Java code
package test;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import com.developercreations.cranium.das.DCDataArchiveSystem;

public class Test {

    public static void main(String args[]){    
        
        String JDBC_DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; 
        String DATABASE_URL = "jdbc:microsoft:sqlserver://192.168.2.14:1433"; 
        Connection connection; 
        Statement statement;         
        try { 
            Class.forName(JDBC_DRIVER); 
            connection= DriverManager.getConnection(DATABASE_URL,"sa","dc9rulez"); 
            statement=connection.createStatement();
            //String sql2="select db_name()   as   databasename ";
            //DatabaseMetaData   md=connection.getMetaData();  
            //ResultSet   rs=s