我的数据库中有一个表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);
}
}
我对数组很差。因此无法做到这一点。请指导我这样做的正确方法。
答案 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注入问题的保护。