根据jlist选择的值从数据库中获取项目并存储在数组中

时间:2013-05-09 10:16:33

标签: java sql jlist

我的数据库中有一个表Users,其中包含phone no列和region列。在我的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);
    }
} 

我对数组很差。因此无法做到这一点。请指导我这样做的正确方法。

1 个答案:

答案 0 :(得分:0)

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

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

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