我想从数据库中检索特定列。对于一个简单的Select语句,我能够检索如下的列
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 :(得分: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子句连接。这通常被认为是编写查询的更好方法。