我想做的是从我的 SQL 表中的列中获取值,特别是名为 SubjectName 的列。获得这些值后,我想创建以 ResultSet 中的每个值命名的 JButton。我当前的代码连接到我的数据库,据我所知,对表的查询也有效,但是当我尝试生成这些按钮并将其添加到我的显示时,try/catch 仅返回我的语句失败。导致问题的代码位于此处:
try
(
Statement initializeDisplay = connect.createStatement()
){
ArrayList<String> buttonList = new ArrayList<String>();
try
{
ResultSet rs = initializeDisplay.executeQuery("SELECT SubjectName from subjectpacktable order by SubjectID");
buttonList = new ArrayList<String>();
while(rs.next())
{
buttonList.add(rs.getString(1));
}
ArrayList<JButton> listOfButtons = new ArrayList<JButton>();
for (int i=0; i < 10; i++)
{
String temp2 = rs.getString(l);
JButton button1 = new JButton(temp2);
listOfButtons.add(button1);
l++;
}
l = 0;
while(listOfButtons.get(l) != null)
{
JButton tempButton = listOfButtons.get(l);
AddCardPanel1.add(tempButton);
l++;
}
while(buttonList.get(l) != null)
{
System.out.println(buttonList.get(l));
l++;
}
l = 0;
}
catch(SQLException e1)
{
System.err.println("Initial Display Failed");
}} catch (SQLException e2)
{
System.err.println("Initial Display Failed");
}
我想知道问题是否出在实际从表中检索值或代码中的其他地方是否没有正确分配值。感谢您的帮助。
最佳答案
代替 while 循环,做
for(int i=0;i<buttonList.size();i++)
{
System.out.println(listOfButtons.get(i).getText());
}
这应该使您的索引保持在数组边界内
关于java - 使用 SQL 表中的值创建 JButton 面板;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26818959/