在其它數據庫語言,你可以組織你的查詢來定義表的實例,如: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