2017-04-12 27 views
1

我想從數據庫中檢索一個特定的列。對於一個簡單的SELECT語句,我可以能夠能夠檢索類似下面
Java - 用Alias查詢SQL查詢

public String getDbColumnValue(String tableName, String columnName, String applicationNumber) { 
    String columnValue = null; 

    try { 
     PreparedStatement ps = null; 
     String query = "SELECT " + columnName + " FROM " + tableName + 
         " WHERE ApplicationNumber = ?;"; 

     ps = conn.prepareStatement(query); 
     ps.setString(1, applicationNumber); 
     ResultSet rs = ps.executeQuery(); 
     if (rs.next()) { 
      columnValue = rs.getString(columnName); 
      return columnValue; 
     } 
    } 
    catch (Exception ex) { 
    } 
    return columnValue; 
} 

一列,但,我使用的別名在我的查詢像下面。這個查詢工作正常。如何使用Java中檢索特定的列

select S.StatusDesc from application A, StatusMaster S 
where A.StatusMasterId = S.StatusMasterId and A.ApplicationNumber = '100041702404' 

任何幫助將不勝感激!

+0

就像是一個sidenode,你已經正確使用了'PreparedStatement'一半的'where子句',爲什麼你不要在列和表的開始處做它 – SomeJavaGuy

+0

@SomeJavaGuy - 我想要在java中使用別名查詢來從數據庫中檢索列。不知道我怎麼能用這個在Java中的別名 – Aishu

回答

1

我覺得你已經把用於表名的簡單別名與用於列名的別名搞混了。爲了解決你的問題,你可以別名每一列您想用唯一的名稱來選擇,即使用此查詢:

select S.StatusDesc as sc 
from application A 
inner join StatusMaster S 
    on A.StatusMasterId = S.StatusMasterId and 
     A.ApplicationNumber = '100041702404' 

然後使用下面的代碼,並期待在結果集的別名的列sc

PreparedStatement ps = null; 
String query = "select S.StatusDesc as sc "; 
     query += "from application A "; 
     query += "inner join StatusMaster S "; 
     query += "on A.StatusMasterId = S.StatusMasterId "; 
     query += "and A.ApplicationNumber = ?"; 
ps = conn.prepareStatement(query); 
ps.setString(1, applicationNumber); 
ResultSet rs = ps.executeQuery(); 
if (rs.next()) { 
    columnValue = rs.getString("sc"); 
    return columnValue; 
} 

注:我重構了您的查詢使用顯式內部聯接,而不是使用where子句聯接。這通常被認爲是編寫查詢的更好方法。

+0

它的工作原理...感謝蒂姆:) – Aishu