我试图制作一个程序,在其中读取用户的输入,即在名为 gname
并将其值存储到一个名为 grammar
. 现在这个输入是对数据库中的输出进行排序的。
数据库看起来像这样
所以当用户进入 G1
在textfield中,它应该以这样的方式显示记录
A->ab,A-ab,B->b
但当我使用时它只显示第一个元素 if(myRs.next)
最后一个如果我用的话 while(myRs.next()
.
电流输出为
以下是代码:
全在试抓块里
String grammar = gname.getText();
myCon = DriverManager.getConnection("jdbc:mysql://localhost:3306/grammar", "root", "");
JOptionPane.showMessageDialog(rootPane, "Connected to database");
mystmt = myCon.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
String query = "SELECT starting_symbol, value from starting_symbol where grammar= '" + grammar + "'";
String query2 = "SELECT non_terminals, terminals from input_values where grammar= '" + grammar + "'";
mystmt.addBatch(query);
mystmt.addBatch(query2);
myCon.setAutoCommit(false);
mystmt.addBatch(query);
mystmt.addBatch(query2);
myRs = mystmt.executeQuery(query);
while (myRs.next()) {
String s = myRs.getString("starting_symbol");
String val = myRs.getString("value");
output.setText(s + "-> " + val);
}
myRs = mystmt.executeQuery(query2);
ArrayList<String> list_one = new ArrayList<String>();
ArrayList<String> list_two = new ArrayList<String>();
while (myRs.next()) {
list_one.add(myRs.getString("non_terminals"));
list_two.add(myRs.getString("terminals"));
for (int i = 0; i < list_one.size(); i++) {
output_2.setText(list_one.get(i) + "->" + list_two.get(i));
}
}
请帮我找出正确的答案
2条答案
按热度按时间but5z9lq1#
您的代码段可以如下所示:
而不是多次调用output_2.settext,只将文本设置为的最后一个获取值
non_terminals -> terminals
在这种情况下,b->b。l3zydbqr2#
使用
StringBuilder
卢克并对输出2字段执行相同的操作