我正在努力完成一項家庭作業,並且正在掛上一些SQL查詢。如何處理你知道的結果集只有一條記錄
我的查詢是詢問一個庫存數據庫的某些項目的數量。給定主鍵,查詢請求表中名稱爲quantity_in_stock的列。
我已經初始化了一些準備好的語句。這是我在這裏使用的一個:
stmtFindColumn = Database.getConnection().prepareStatement(String.format("select ? from %s where %s = ?",
INVENTORY_TABLE_NAME, SKU));
現在調用一個單獨的方法。我將它傳遞給一個靜態常量QTY_IN_STOCK,它被定義爲「quantity_in_stock」和項目的SKU編號,它是表中的主鍵。
private int getIntegerFromTable(String column, String key) {
int toReturn = 0;
try {
// Complete the prepared statement
stmtFindColumn.setString(1, column);
stmtFindColumn.setString(2, key);
ResultSet result = stmtFindColumn.executeQuery();
toReturn = result.getInt(column);
} catch (SQLException e) {
LOG.error(e.getMessage());
e.printStackTrace();
}
return toReturn;
}
當我運行查詢,我得到一個SQL異常,告訴我:無效的列名quantity_in_stock。
我試過使用while循環處理result.next()並得到相同的錯誤。當你知道只有一條記錄被返回時,我找不到任何如何正確得到結果的例子。
幫助!
編輯:好的,我發現我的問題的一部分是我沒有得到一個結果集,我應該期待一個。有任何想法嗎?
更新:我已經測試了我的代碼,使用花園多種語句和普通字符串查詢來代替,它工作得很好。所以問題在於我使用準備好的陳述。有人可以檢查我是否使用?通配符正確嗎?謝謝!
啊哈。讓我嘗試一下,我會回來......' – deanTheBean
就是這樣!你們真棒。週六晚上10點我還能在哪裏得到這個問題的答案! – deanTheBean