2017-04-12 11 views
1

データベースから特定の列を取得したい。単純なSELECT文のため、私はJava - エイリアスを持つ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

ちょうどサイドノードと同じように、 'where'節に' PreparedStatement'の半分を正しく使っています。なぜなら、あなたもカラムとテーブルの初めにそれをしないのですから。 – SomeJavaGuy

+0

@SomeJavaGuy - 私はしたいですjavaでエイリアスクエリを使用してdbからカラムを取得します。どのように私は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

それは動作します...ありがとうTim :) – Aishu

関連する問題