在其它数据库语言,你可以组织你的查询来定义表的实例,如:HSQL Java表列访问问题
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中工作正常。
您可能会发现在计算器非常有帮助这类似的问题及对策:HTTP:// stackoverflow.com/questions/7224024/jdbc-resultset-get-columns-with-table-alias –
谢谢。不幸的是,这里提供的解决方案类似于@davidxxx在下面提供的内容......修改所有查询。这个语法看起来像所有rdbms应该支持的标准格式。 –
当然,dbms支持语法。这里的问题不是dbms,而是您用来与您的dmbs(JDBC驱动程序)进行通信的库。当你编写一个JPQL查询时,它是同样的事情,如果你希望它有效,你有一些规则和限制。 – davidxxx