Лучший способ печатать данные из двух столбцов базы данных MySQL в jTextfield один за другим

0

Я пытаюсь создать программу, в которой я читаю ввод от пользователя, т.е. в текстовое поле с именем gname и сохраняю его значение в строке, называемой grammar. Теперь этот ввод - это то, что сортирует мой вывод из базы данных.

База данных выглядит так Изображение 174551

Поэтому, когда пользователь вводит G1 в текстовое поле, он должен отображать записи таким образом

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

Но он показывает только 1-й элемент, когда я использую if(myRs.next) и последний, если я использую while(myRs.next().

токовый выход Изображение 174551

Вот код для этого:

его все в try catch block

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

            }

        }

Пожалуйста, помогите мне в получении правильного выхода

Теги:
netbeans
swing
resultset

2 ответа

1
Лучший ответ

Использовать StringBuilder Luke

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

  • 0
    выдает ошибку и ничего не показывает
0

Ваш фрагмент кода может быть следующим:

    StringBuilder sb = new StringBuilder();
    while (myRs.next()) {
        if (sb.length() > 0) sb.append(",");
        sb.append(myRs.getString("non_terminals"))
          .append("->")
          .append(myRs.getString("terminals"));
    }

Вместо того, чтобы вызывать output_2.setText несколько раз, что только задает текст последним значением выборки non_terminals → terminals в этом случае B-> b.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню