【问题标题】:Displaying onlty tables from MSSQL Server 2005 using java使用 java 仅显示 MS SQL Server 2005 中的表
【发布时间】:2011-05-07 02:32:59
【问题描述】:

我在从 SQL Server 2005 获取表名时遇到问题。我已成功获取表名,但问题在于 VIEWS 也显示了表名。我只需要在下拉列表中显示表名。

我的代码是:

...
String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
               "databaseName="somedb";username=sa;password=1234";
Connection con = null;
Statement st = null;
ResultSet rslt = null;

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

con = DriverManager.getConnection(connectionUrl);

DatabaseMetaData md = con.getMetaData();

ResultSet rrs = md.getTables(null, null, "%", null);

while (rrs.next()) 
{
     System.out.println(rrs.getString(3));
}

这里System.out.println(rrs.getString(3)); 语句打印所有表名,但连同视图名。我需要避免打印视图名称。我该怎么做?

【问题讨论】:

    标签: java sql-server-2005 jdbc


    【解决方案1】:

    您可以在 MSSQL 服务器上查询元数据表。例如select * from sysobjects where xtype = 'u' ;这里 xtype 是对象的类型,'u' 是指表类型的对象。有关语法详细信息,请参阅 MSSQL 服务器文档

    【讨论】:

      【解决方案2】:

      有两个方面:

      1/您没有限制在 Db 端查看元数据

      2/ 通过使用别名返回 AliasName f.e. Select SomeColumNane as Count 返回 columnName Count

      private ResultSetMetaData metaData; //variable
      //intialize rslt("Select .....") and thenarter you can call from rstl
      metaData = rslt.getMetaData();
      //get Column Class (Varchar, Date, Double....)
      String className = metaData.getColumnClassName(column + 1);// packed into try catch finally block
      // get column count
      int columnCount = metaData.getColumnCount();// packed into try catch finally block
      //get Column Name
      String columnName = metaData.getColumnName(column + 1);// packed into try catch finally block
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多