在其他数据库语言中,您可以构建查询以定义表的实例,例如:
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中工作正常。
最佳答案
我不知道使用这种语法的其他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");