1

Usersデータベースに と の列phone noを持つテーブルがありますregion。私の GUI にはJList、ユーザーが 1 つ以上の地域を選択できる場所があるため、地域が一致する電話番号にメッセージを送信する必要があります。

私が直面している問題は、データベースから電話番号を取得することです。これは私のコードです

        final JList listRegion = new JList(list);
        listRegion.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        listRegion.setVisibleRowCount(3);
        JScrollPane scroll = new JScrollPane(listRegion);
        scroll.setBounds(113, 254, 123, 50);    
        frame.getContentPane().add(scroll);

選択したリストの値をこのように保存しています

Object[] areaList = listRegion.getSelectedValues();

ここで、areaList の領域と一致する対応する領域を持つすべての数値を取得し、それらを配列に格納する必要があります。私はこのようなことを試しました。しかし、それは間違っているようです。

for( int i=0; i<areaList.length ; i++){
    String sql2 = "select phone_no from users where region = areaList["+i+"]";
    result = statement.executeQuery(sql2);

    while(result.next()){
        String numbers = result.getString(1);
        //System.out.println(numbers);
    }
} 

私は配列が苦手です。したがって、それを行うことができません。これを行う正しい方法を教えてください。

4

1 に答える 1

0

areaListSQL から変数にアクセスできません。おそらく次のようなものが必要です(テストされていません):

String sql2 = "select phone_no from users where region in (";
for( int i=0; i<areaList.length ; i++){
    sql2 += "\'"+ areaList[i]+"\'";
    if (i<areaList.length-1)
        sql2+=",";
}
sql+=")";

result = statement.executeQuery(sql2);

while(result.next()){
        String numbers = result.getString(1);
        //System.out.println(numbers);
}

また、SQL を手動で作成する代わりに を使用する必要があることにも注意してくださいPreparedStatement。この方法では、SQL インジェクションの問題から保護されます。

于 2013-05-09T10:24:05.260 に答える