2017-06-05 26 views
0

準備されたステートメントを使用してJavaで結合を行うことはできますか?Javaで準備されたステートメントの結合

public class Test { 

    static Connection conn; 
    static PreparedStatement ps; 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     try { 

     String sql = "select addr.address_id from address addr inner join pizza_stores ps on addr.address_id = ps.address_id"; 

     conn = ConnectionUtil.getConnection(); 
     ps = conn.prepareStatement(sql); 
     System.out.println("DEBUG--: before query"); 
     ResultSet rs = ps.executeQuery(sql); 



     while(rs.next()) { 
      System.out.println(rs.getInt("addr.address_id")); 
     } 

     ps.close(); 
     conn.close(); 

    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 


    } 

} 

私は結果を得るていないが、私は、SQL開発者で実行したとき、私は結果(元のADDRESS_ID - > 1、2、3)を得ますか。私は後でこのためにストアドプロシージャを使用します。ただ興味があるだけ。

+3

SQL文で必要な処理を実行できます。ここには何も起こっておらず、それは明らかではありません。 – OldProgrammer

+2

"prepareStatement"の使い方にエラーがあるようです。最初に 'ps = conn.prepareStatement(sql);'を呼び出し、sqlを再び 'ResultSet rs = ps.executeQuery(sql);'に渡しました。しかし、私はあなたが設定するための入力がないので、それはうまくいくと思います。空白の結果セットは、接続されたdbユーザーになる可能性がありますか?カラム名の代わりにrs.getIn(1)を使用してみてください。 –

+0

getInt( "addr.address_id") 'の代わりに' getInt( "address_id") ' –

答えて

1

問題を見つけました。

私は2つのテーブル(アドレスとpizza_stores)を持っていました。

私がpizza_storesテーブルを作成したとき、FKで、アドレステーブルの代わりにpizza_storesテーブル(同じテーブル)を参照しました。したがって、何も印刷されていませんでした。

javaコードは、sqlの制約の問題が増えています。

関連する問題