1

我的数据库中有一个表Users,其中包含列phone noregion. 在我的 GUI 中,我有一个JList用户可以从中选择一个或多个区域的地方,因此我需要向具有匹配区域的电话号码发送消息。

我面临的问题是从数据库中检索电话号码。这是我的代码

        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

您无法areaList从 sql 访问该变量。可能您需要类似(未测试)的东西:

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);
}

另请注意,您应该使用 a PreparedStatement,而不是手动构建 sql,这样您将受到 sql 注入问题的保护。

于 2013-05-09T10:24:05.260 回答