亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

德比 - java.sql.SQL異常:未找到列“table.column_name”

德比 - java.sql.SQL異常:未找到列“table.column_name”

哈士奇WWW 2022-09-14 10:24:33
我有這2個表:兩個表都有一個名為 的公共列。inventoryproduct_categoriesbusinessId現在我有2個數據庫,一個托管在MySQL上,另一個托管在Derby上,兩個數據庫具有相同的表結構。因此,我一直在對這兩個數據庫執行以下查詢:SELECT * FROM INVENTORYINNER JOIN PRODUCT_CATEGORIES    ON INVENTORY.BUSINESSID = PRODUCT_CATEGORIES.BUSINESSID    AND INVENTORY.CATEGORY = PRODUCT_CATEGORIES.CATEGORYNAMEWHERE INVENTORY.BUSINESSID = 1當我使用下面的Java代碼執行上面的查詢時,我在兩個數據庫中都取得了成功,但是當我嘗試從表中獲取列時,Derby會引發異常ResultSetbusinessIdproduct_categoriestry(Connection conn = dbConfig.getDatabaseConnection()){    PreparedStatement pst = conn.prepareStatement(sql);    pst.setInt(1, businessId);    List<Product> products = new ArrayList<>();    ResultSet rs = pst.executeQuery();    while(rs.next())    {        ...        int businessId = rs.getInt("product_categories.businessId"); //<-- This lines throws an exception        ...    }}我收到此錯誤消息:java.sql.SQL 異常:未找到“product_categories.業務 Id”列請問這里出了什么問題?
查看完整描述

2 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

結果集中的列不以表別名為前綴。

取代:

int businessId = rs.getInt("product_categories.businessId");

跟:

int businessId = rs.getInt("businessId");

注意:使用通常不是很好的做法;最好明確列出您希望查詢返回的列。這使得查詢的縮進更清晰,并且有助于避免在查詢中起作用的不同表中存在相同的列名時發生名稱沖突。SELECT *


查看完整回答
反對 回復 2022-09-14
?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

這可能是由于結果集中列的鍵名稱不同。嘗試在數據庫中執行查詢,然后從此處復制粘貼列名。

它可能應該是 或 。BUSINESSIDbusinessid

最好在聯接具有相同列名的多個表時使用列名。alias


查看完整回答
反對 回復 2022-09-14
  • 2 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號