質問内容
質問を評価する
(0ポイント)
|
jtableにアクセスのように新規入力用行を追加するため、以下のようにモデルに追加
model.addRow(new Object[] { RecCnt + 1, 1 }); //新規入力行を追加
次に、新規入力用行に実際に値が入力されたらSQLのINSERT処理を行い 既存行ならば、SQLのUPDATE処理を行うということがしたいのですが この、”新規入力行か既存行か”というのを判定する方法を知りたい。 DBにSELECT COUNT(*) FROM TABLEを走らせて、レコード数を取得 model.getRowCount()でモデルのレコード数を取得し、比較するという 方法をやってみましたが、INSERT処理がトリガできないのです。 どなたか、どういう方法をとればよいかご指導ください。
table.getModel().addTableModelListener( new TableModelListener() { public void tableChanged(TableModelEvent te) { int row = te.getLastRow(); int col = te.getColumn(); int trc = table.getRowCount(); int mrc = model.getRowCount(); if (te.getType() == TableModelEvent.INSERT) { // model.addRowした後だと呼ばれない? insertTable(row, col); } if (te.getType() == TableModelEvent.UPDATE) { try { Class.forName(JDBC_DRIVER); Connection conn = DriverManager.getConnection(STR_CONN); Statement stmt = conn.createStatement(); String CntSql = "select count(*) from test_records"; ResultSet rst = stmt.executeQuery(CntSql); rst.next(); // 行数を取得する。 int RecCnt = rst.getInt(1); conn.close(); if (RecCnt + 1 == mrc) { //ここをどうすればよいか? insertTable(row, col); } updateTable(row, col); JTable table = null; table = selectTable(); } catch (Exception e) { System.out.println(e.getMessage()); } } } });
|