表題の件で
ボタンの押下後、レコードを順次表示する方法が分かりません。
実装したいボタンは、以下の4つです。
1.次のレコードを表示 2.前のレコードを表示
3.先頭のレコードを表示 4.最後のレコードを表示
現在、下記のコードで先頭行のレコードは表示できています。
調べたことは
各ボタンに下記のメソッドを使用するのだろうと思い、色々試行しています。
1.next() 2.previous() 3.first() 4.last()
while文を消して、rs.next();にすれば1行目が表示されますが、
これを、ボタンに付与する際のコードの書き方、が分かっていない状況です。
リザルトセットのリファレンスは読みましたが、解決できませんでした。
サンプルコードも検索してみましたが見つけれませんでした。
サンプルコード、参考サイト等があれば、ご教授お願いします。
Java
1public void DB_hyouzi() { 2 //DBをテキストフィールド・コンボボックスに表示 3 //文字コードの設定 4 String dburi = "mysql://127.0.01:3306/new_" 5 + "?useUnicode=true&characterEncoding=utf8"; 6 7 try { 8 //DBとの接続 9 Class.forName("com.mysql.cj.jdbc.Driver"); 10 Connection conn = DriverManager.getConnection( 11 "jdbc:" + dburi, "root", "psw"); 12 13 String sql1 = "select * from Adata limit 1;"; 14 String sql2 = "select * from Bdata limit 1;"; 15 String sql3 = "select * from Cdata limit 1;"; 16 17 18 PreparedStatement st = conn.prepareStatement(sql1 19 ,ResultSet.TYPE_SCROLL_INSENSITIVE 20 ,ResultSet.CONCUR_READ_ONLY); 21 PreparedStatement st2 = conn.prepareStatement(sql2 22 ,ResultSet.TYPE_SCROLL_INSENSITIVE 23 ,ResultSet.CONCUR_READ_ONLY); 24 PreparedStatement st3 = conn.prepareStatement(sql3 25 ,ResultSet.TYPE_SCROLL_INSENSITIVE 26 ,ResultSet.CONCUR_READ_ONLY); 27 System.out.println("MySQLに接続できました!"); 28 ResultSet rs = st.executeQuery(sql1); 29 ResultSet rs2 = st2.executeQuery(sql2); 30 ResultSet rs3 = st3.executeQuery(sql3); 31 32 33 34 JTextField aryTF[] = new JTextField[7] 35 aryTF[0] = JTextField1; 36 aryTF[1] = JTextField2; 37 aryTF[2] = JTextField3; 38 aryTF[3] = JTextField4; 39 aryTF[4] = JTextField5; 40 aryTF[5] = JTextField6; 41 42 43 44 while (rs.next()) { 45 //aにDBの値を代入 46 47 String a0 = rs.getString("ID"); 48 String a2 = rs.getString("CD"); 49 String a4 = rs.getString("住所"); 50 String a5 = rs.getString("日付"); 51 52 //テキストフィールドにaをセット 53 aryTF[0].setText(a0); 54 aryTF[2].setText(a2); 55 aryTF[4].setText(a4); 56 aryTF[5].setText(a5); 57 58 59 60 } 61 62 while(rs2.next()) { 63 String a3 = rs2.getString("職種"); 64 aryTF[3].setText(a3); 65 } 66 while(rs3.next()) { 67 String a1 = rs3.getString("名前"); 68 aryTF[1].setText(a1); 69 } 70 71 72 st.close(); 73 conn.close(); 74 rs.close(); 75 rs2.close(); 76 rs3.close(); 77 78 } catch (ClassNotFoundException | SQLException e) { 79 System.out.println("SQLExeception:" + e.getMessage()); 80 } 81 } 82
//次のレコードへのボタン設定 class r_tugi implements ActionListener{ public void actionPerformed(ActionEvent e) { if (e.getSource() == r_tugi) { } } }
DB内容
Adata
カラム名 id・CD・住所・日付
レコード数、各カラムに50行
Bdata
カラム名 職業
レコード数 各カラムに50行
Cdata
カラム名 名前
レコード数 50行
Windows10
mySQLserver 5.7
mySQL Workbench8.0
あなたの回答
tips
プレビュー