目的は表題の件です。
大まかな流れは下記の通りです。
GUIの作成完了
↓
DBとの接続完了
↓
テキストフィールド内に表示 失敗
↓
テキストフィールド内でDB修正成功(コードの記載無し)
実行結果はテキストフィールド内は空白になり、エラー等は無いです。
DBのmenteテーブルの情報ですが
レコード数、フィールド数共にカラムに対して1個づつになります。
1個づつのため while(rs.next()) は無くてもいいのかなと思っています。
どこの個所を修正すればいいか、ご教授お願いします。
(ネット等で調査して原因だと思った箇所については、手あたり次第試しています。
何を試したかは多すぎて記載しないです)
現時点で試しているのは、下記をインスタンス化して、public Mente() { クラスに
textField.set(a1)と追記して成功するか調査中です。
ただpublic Mente() { クラスにstaticを付けると下記のエラーが出ています。
インスタンス化や変数の使い方や仕様の理解が足りていないため、ソースを書きながら勉強中です。
String a0 = rs.getString("名前");
String a1 = rs.getString("性別");
String a2 = rs.getString("年齢");
String a3 = rs.getString("身長");
String a4 = rs.getString("体重");
型 Menteのコンストラクターに対する不正な修飾子です。public、protected および private
のみ許可されています
Jlist等は使用する気はありません。
仕様バージョン等
Windows10
jdk15.0
mySQLserver 5.7
mySQL Workbench8.0
JFrame
1import java.awt.EventQueue; 2import java.sql.Connection; 3import java.sql.DriverManager; 4import java.sql.PreparedStatement; 5import java.sql.ResultSet; 6import java.sql.SQLException; 7 8import javax.swing.JFrame; 9import javax.swing.JLabel; 10import javax.swing.JPanel; 11import javax.swing.border.EmptyBorder; 12import javax.swing.JTextField; 13 14public class Mente extends JFrame { 15 16 private JPanel contentPane; 17 private JLabel lblNewLabel; 18 private JTextField textField; 19 private JTextField textField_1; 20 private JTextField textField_2; 21 private JTextField textField_3; 22 private JTextField textField_4; 23 24 /** 25 * Launch the application. 26 */ 27 public static void main(String[] args) { 28 EventQueue.invokeLater(new Runnable() { 29 public void run() { 30 try { 31 Mente frame = new Mente(); 32 frame.setVisible(true); 33 } catch (Exception e) { 34 e.printStackTrace(); 35 } 36 } 37 }); 38 } 39 40 /** 41 * Create the frame. 42 */ 43 public Mente() { 44 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 45 setBounds(100, 100, 634, 446); 46 contentPane = new JPanel(); 47 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 48 setContentPane(contentPane); 49 contentPane.setLayout(null); 50 51 lblNewLabel = new JLabel("New label"); 52 lblNewLabel.setBounds(0, 0, 620, 76); 53 contentPane.add(lblNewLabel); 54 55 textField = new JTextField(); 56 textField.setBounds(44, 86, 86, 19); 57 contentPane.add(textField); 58 textField.setColumns(10); 59 60 textField_1 = new JTextField(); 61 textField_1.setBounds(44, 127, 86, 19); 62 contentPane.add(textField_1); 63 textField_1.setColumns(10); 64 65 textField_2 = new JTextField(); 66 textField_2.setBounds(44, 180, 86, 19); 67 contentPane.add(textField_2); 68 textField_2.setColumns(10); 69 70 textField_3 = new JTextField(); 71 textField_3.setBounds(44, 245, 86, 19); 72 contentPane.add(textField_3); 73 textField_3.setColumns(10); 74 75 textField_4 = new JTextField(); 76 textField_4.setBounds(44, 288, 86, 19); 77 contentPane.add(textField_4); 78 textField_4.setColumns(10); 79 } 80 81 82 public void connection() { 83 //DBをテキストフィールドに表示 84 85 //文字コードの設定 86 String dburi = "mysql://127.0.01:3306/mm" 87 + "?useUnicode=true&characterEncoding=utf8"; 88 try{ 89 //DBとの接続 90 Class.forName("com.mysql.cj.jdbc.Driver"); 91 Connection conn = DriverManager.getConnection( 92 "jdbc:"+dburi,"root","psw"); 93 94 95 String sql1 ="select * from mente_;"; 96 PreparedStatement st = conn.prepareStatement(sql1); 97 System.out.println("MySQLに接続できました!"); 98 ResultSet rs =st.executeQuery(sql1); 99 100 JTextField aryTF[]=new JTextField[5]; 101 aryTF[0] = textField; 102 aryTF[1] = textField_1; 103 aryTF[2] = textField_2; 104 aryTF[3] = textField_3; 105 aryTF[4] = textField_4; 106 107 108 while(rs.next()) { 109 String a0 = rs.getString("名前"); 110 String a1 = rs.getString("性別"); 111 String a2 = rs.getString("年齢"); 112 String a3 = rs.getString("身長"); 113 String a4 = rs.getString("体重"); 114 115 aryTF[0].setText(a0); 116 aryTF[1].setText(a1); 117 aryTF[2].setText(a2); 118 aryTF[3].setText(a3); 119 aryTF[4].setText(a4); 120 121 } 122 123 124 125 st.close(); 126 conn.close(); 127 rs.close(); 128 129 }catch(ClassNotFoundException | SQLException e) { 130 System.out.println("SQLExeception:" + e.getMessage()); 131 } 132 } 133} 134
回答1件
あなたの回答
tips
プレビュー