hsql Java表列访问问题

时间:2016-12-07 18:43:58

标签: java mysql hsqldb

在其他数据库语言中,您可以构建查询以定义表的实例,例如:

SELECT a.foo, a.bar FROM ACME a WHERE a.ID=1;

执行类似

的操作
rs.getInt("a.foo");

获取此表第一行的值。我在hsql中执行这个看似基本的功能时遇到了麻烦,并且想知道是否有一个简单的解决方案或者其他人是否经历过这个问题。如果我执行上述查询并尝试访问'a.foo',我会使用hsql收到以下错误:

org.hsqldb.jdbc.Util.sqlException(Unknown Source)
org.hsqldb.jdbc.jdbcResultSet.findColumn(Unknown Source)
org.hsqldb.jdbc.jdbcResultSet.getInt(Unknown Source)

但是,如果我改变了对

的访问权限
rs.getInt("foo");
一切正常。是什么赋予了?为什么hsql在以这种方式定义查询时难以检索'a.foo'?这些命令系列在MySQL中运行良好。

1 个答案:

答案 0 :(得分:3)

我不知道其他dbms如何使用此语法但hsqldb行为似乎与

的规范相匹配
 int java.sql.ResultSet.getInt(String columnLabel) throws SQLException
  

检索当前行中指定列的值   此ResultSet对象作为Java编程语言中的int。

<强>参数

  

columnLabel使用SQL AS子句指定的列的标签。   如果未指定SQL AS子句,则标签的名称为   列返回:

在您的查询中,**a.fo**代表fo列。它不是别名。如果您想使用别名,可以尝试:

SELECT a.foo as 'myFoo', a.bar FROM ACME a WHERE a.ID=1;

得到这样的价值:

rs.getInt("myFoo");