私はこの問題を数時間解決しています.3つのテーブルがあり、そのうちの1つはプレース番号とトレイIDを介して他のテーブルを接続します。特定のトレイにいくつのサンプルがあるか調べるために、私は完全な純粋なSQLコードで動作するトレイIDで場所を集計しました。JavaのResultSetから集約されたSQL値を取得する
私のJavaコード:
ps = connection.prepareStatement("SELECT TRAYID, COUNT(PlaceNo) AS OCCUPIED " +
"FROM PLACE " +
"GROUP BY TRAYID " +
"HAVING TRAYID = ?");
ps.setInt(1, trayId);
rs = ps.executeQuery();
if (!rs.isBeforeFirst()) { throw new CoolingSystemException(); }
else {
spaceOccupied = rs.getInt("OCCUPIED");
そして、最後の行にプログラムがクラッシュしています。私も名前の代わりにgetInt(1)
を試しましたが、何も動作しません。そして、結果セットが空であるならば、それは
if (!rs.isBeforeFirst()) { throw new CoolingSystemException(); }
でクラッシュしていました私は、ログインしているので私が確かに知ってすることは値
Image: DBeaver using the same TrayID
があることが、私はそれがこの場所であることを確信していますされそれぞれの行の前と後にそれぞれの想像を絶する点にそれを置きます。
誰にも解決方法がありますか?また、get ...()関数のすべてのデータ型を試しました:(
何が例外ですか? – rafaelim
あなたは 'rs.next()'を呼び出すことはありませんanywh ere。結果セットを消費する慣習的な方法は、while(rs.next())ループでそれを行うことです。 –
くそー...おかげさまで、次回の呼出しですでに3度目の首が壊れています。ちょうどそれを忘れて - @ – Philipp