2017-02-14 2 views
0
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/amd", "root", ""); 
PreparedStatement ps = con.prepareStatement("select *from neighbour_node where node_name='" + nodename + "' "); 
ResultSet rs = ps.executeQuery(); 
while (rs.next()) { 

    String neigh = rs.getString(2); 
    jTextField1.setText(neigh); 
} 

И моей базу данныхХочет, чтобы отобразить более одного данных, извлеченных из базы данных MySQL в Java

node_name:  a b b 

node_neighbour: b a c 

если мой вход «а», а затем отобразить «Ъ» в качестве соседнего узла.

если мой вход «b», тогда отобразите «a» & «c» в качестве соседнего узла.

но в моем коде для ввода «b» он отображает только «c» как соседний узел.

Как исправить мой код для отображения нескольких данных.

+0

Вы в настоящее время выбираете все столбцы, которые, вероятно, являются плохими идеями. Пожалуйста, обновите свой вопрос и покажите нам структуру таблиц вместе с ожидаемым результатом. –

+0

Возможно, вы захотите рассмотреть, что делает 'jTextField1.setText' ... Вы перезаписываете значения и отображается только последнее возвращаемое значение. Вместо этого вы можете захотеть создать список значений и только вызывать 'jTextField1.setText' ** после ** цикла. –

+0

PreparedStatement ps = con.prepareStatement ("select * from neighbour_node где node_name = '" + nodename + "'"); –

ответ

0

Кажется, вы ищете JTable javadoc или можете создать новый JTextField каждый раз.

EDIT: Я согласен с @ Тим, выбирая все может быть плохой идеей

0

Вы можете использовать List<String> вместо String, например:

List<String> list = new ArrayList<>(); 

while(rs.next()){ 
    list.add(rs.getString(2)); 
} 

Так как это вы можете получить список из строк и вы можете показать его с помощью простого цикла:

for(String s : list){ 
    System.out.println(s); 
} 

Примечание

Поскольку вы используете PreparedStatement, почему вы не используете ? так:

PreparedStatement ps = 
     con.prepareStatement("select * from neighbour_node where node_name = ?"); 
ps.SetString(1, nodename); 
0

да? Вы используете

jTextField1.setText(neigh); 

in a while loop. Конечно, он перезаписывается каждый раз, и вы получаете только последнее найденное значение. Вы должны собрать все значения в одной строке и установить поле в конце.