-1
データを挿入するのではなく、データベースtable.ifにデータがあるかどうかを確認する必要があります。しかし、最初のボタンをクリックすると完全に動作します。私は同じ値でもう一度ボタンをクリックしようとすると、テーブルに挿入されます。あなたが二回next()
を呼んでいる誰かに質問を選択して間違った結果が表示される
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
// TODO add your handling code here:
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
ArrayList<String> list = new ArrayList<>();
Object obj[] = null;
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/cem?useSSL=false", "root", "123");
//here stu is database name, root is username and password
Statement stmt = con.createStatement();
String pn = "select gname from games where gname='" + jTextField1.getText() + "'";
ResultSet rsPn = stmt.executeQuery(pn);
System.out.println(rsPn.next());
if (rsPn.next() == false) {
String q = ("insert into games(gid,gname) values(NULL,'" + jTextField1.getText() + "')");
int i = 0;
i = stmt.executeUpdate(q);
if (i > 0) {
System.out.println("success");
list.add(jTextField1.getText());
obj = list.toArray();
model.addRow(obj);
} else {
System.out.println("stuck somewhere");
}
StudentDetails.details();
jTextField1.setForeground(Color.BLACK);
stmt.close();
con.close();
} else {
jTextField1.setForeground(Color.red);
System.out.println("Name Already exist");
}
} catch (SQLException ex) {
Logger.getLogger(InsertPanel.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(InsertPanel.class.getName()).log(Level.SEVERE, null, ex);
}
}
なぜあなたは 'gname'に一意のキーを持っていませんか? – shmosel
このコードは悪い考えです。あなたはこのようにUIとデータベースのコードを混ぜ合わせるべきではありません。それは不確定な混乱です。テストして置くことができるリポジトリクラスを書く方が良いでしょう。コントローラークラスへの参照を与えます。リポジトリクラスは、結果セットをコレクションにロードして呼び出しメソッドに戻す必要があります。あなたは明らかに間違っています。 – duffymo