使用java仅显示MSSQL Server 2005中的表

使用java仅显示MSSQL Server 2005中的表,java,sql-server-2005,jdbc,Java,Sql Server 2005,Jdbc,我在从SQLServer2005获取表名时遇到问题。我已经成功地获取了表名,但问题是表名视图也在显示。我只需要在下拉列表中显示表名 我的代码是: ... String connectionUrl = "jdbc:sqlserver://localhost:1433;" + "databaseName="somedb";username=sa;password=1234"; Connection con = null; Statement st = null; Res

我在从SQLServer2005获取表名时遇到问题。我已经成功地获取了表名,但问题是表名视图也在显示。我只需要在下拉列表中显示表名

我的代码是:

...
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))语句打印所有表名,但同时打印视图名。我需要避免打印视图名称。我该怎么做?

您可以在MSSQL服务器上查询元数据表。e、 g.从sysobjects中选择*,其中xtype='u';这里xtype是对象的类型,“u”是指表类型的对象。。有关语法详细信息,请参阅MSSQL服务器文档。有两个方面:

1/您不受数据库端元数据查看的限制

2/使用别名返回别名f.e.选择某个ColumnAne作为计数返回columnName计数

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