2017-02-14 54 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 

如果我的輸入爲「a」,然後顯示「B」作爲相鄰節點。

如果我的輸入是「b」,那麼顯示「a」&「c」作爲鄰居節點。

但在我的代碼輸入「b」它只顯示「c」作爲鄰居節點。

如何更正我的代碼以顯示多個數據。

+0

您目前正在選擇所有列,這可能是一個壞主意。請更新您的問題,並向我們展示表格結構以及您的預期輸出。 –

+0

您可能想要考慮'jTextField1.setText'的作用...您覆蓋這些值,並且只顯示返回的最後一個值。相反,您可能需要構造一個值列表,並且只能在循環後面調用'jTextField1.setText' **。 –

+0

PreparedStatement ps = con.prepareStatement(「select * from neighbour_node where node_name ='」+ nodename +「'」); –

回答

0

似乎您正在尋找JTable javadoc,或者每次都可能創建一個新的JTextField。

編輯:我同意@Tim,選擇一切可能是一個壞主意

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

在一個while循環中。當然,它每次都會被覆蓋,只有最後找到的值。您應該收集一個字符串中的所有值並在末尾設置字段。