我正在尝试制作一个程序,其中我从用户那里读取输入,即在名为gname的文本字段中并将其值存储到名为grammar的字符串中。现在,此输入将对我的数据库输出进行排序。

数据库看起来像这样
java - 将数据从mySQL数据库的两列依次打印到jTextfield的最佳方法-LMLPHP

因此,当用户在文本字段中输入G1时,它应以这种方式显示记录

A->ab,A-ab,B->b


但是当我使用if(myRs.next)时它仅显示第一个元素,而当我使用while(myRs.next()时显示最后一个元素。

当前输出为
java - 将数据从mySQL数据库的两列依次打印到jTextfield的最佳方法-LMLPHP

这是此代码:

全部尝试捕获块

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

            }

        }


请帮助我获得正确的输出

最佳答案

使用StringBuilder路加

StringBuilder b = new StringBuilder();
while (myRs.next()) {

    String s = myRs.getString("starting_symbol");
    String val = myRs.getString("value");
    if (b.length() > 0) {
        b.append(',');
    }
    b.append(s + "-> " + val);

}
output.setText(b.toString());


并对output_2字段执行相同的操作

09-16 05:16
查看更多