【问题标题】:How to get table names from sys.tables in java?如何从 java 中的 sys.tables 获取表名?
【发布时间】:2013-05-24 15:03:55
【问题描述】:

我们需要在 Eclipse 中从 SQL Server 2005 中获取表名而不是 referenced_object_id。就这样完成了,但没有得到表名:

   Statement smt = con.createStatement();
            smt.executeQuery("SELECT * from table_references");
            ResultSet rs = smt.getResultSet();

            while (rs.next()) { 
                String column1 = rs.getString("referenced_object_id");
                String column2 = rs.getString("name");
                String column3 = rs.getString("parent_column_id");
                String column4 = rs.getString("referenced_column_id");

                String sql = "SELECT name from sys.tables WHERE object_id='" + column1 + "'";

                System.out.println(column1 + " | " + column2 + " | " + column3 + " | " + column4);

【问题讨论】:

  • 您有什么问题或问题?在您的 sn-p 中,您不是在查询数据库,而是在 sql 中创建一个查询字符串
  • 您要执行哪个语句?你能不能让你的问题不那么混乱。您可以在stackoverflow.com/questions/10784861/… 中查看一些 sql 示例
  • 修正了一些问题。
  • 你必须在table_referencessys.tables之间建立一个连接

标签: java sql-server eclipse


【解决方案1】:

您需要从数据库中获取元数据才能获取表的名称。

DatabaseMetaData meta = conn.getMetaData();  
ResultSet rs = meta.getTables(null, null, "%", null);
while (rs.next()) {
  System.out.println(rs.getString(3));
}

看看这里 - http://docs.oracle.com/javase/6/docs/api/java/sql/DatabaseMetaData.html#getTables%28java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String%5b%5d%29 - 它会帮助你。

【讨论】:

  • Collection classes = owlModel.getUserDefinedOWLNamedClasses(); for (Iterator it = classes.iterator(); it.hasNext();) { OWLNamedClass cls = (OWLNamedClass) it.next(); cls.getName(); smt.executeQuery("SELECT * FROM Country"); ResultSet rs2 = smt.getResultSet(); while (rs2.next()) { String col = rs.getString("countryName"); cls.createOWLIndividual(col); } com.microsoft.sqlserver.jdbc.SQLServerException:结果集已关闭。我这里也出错了
  • 问题出在您使用结果集的方式上。根据getResultset的javadoc 将当前结果作为ResultSet对象检索。每个结果只应调用此方法一次。 .所以,不要这样做:smt.executeQuery("SELECT * FROM Country"); ResultSet rs2 = smt.getResultSet(); 使用这个:ResultSet rs2 = smt.executeQuery("SELECT * FROM Country");
猜你喜欢
  • 2019-10-31
  • 1970-01-01
  • 2015-05-01
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
相关资源
最近更新 更多