2017-04-25 4 views
0

私はMySQLテーブルのinfを使ってJTableに行を作成するプログラムを持っています。私は自動増分IDを使用しますが、データベースから行を削除して(そしてそのためにJTable)、新しいものを追加するたびに、私はIDの間にgabを持っています。MySQL IDとJTableローを同期させる

たとえば、私のMySQLテーブルには 1,2行目の3行が格納されており、JTableにrownumber 1,2,3の行として格納されています。

そのため、そのテーブルから行を削除すると、その下のすべての行にIDが更新され、IDの間にギャップがないようにする方法があるかどうかを知りたいと思います。

これはクエリで達成できると期待していましたか?

+1

'私はそれが、これはクエリを達成することができたことができ期待していましたか? ' - テーブルの自動インクリメントID部分ではありませんか?そのIDをSQLクエリから返して、その値をJTableに表示できませんか?テーブルのキーを持つ点は、時間の経過と共に変化しないということです。したがって、行を削除するときにIDをリセットすることは意味がありません。 – camickr

+0

いいえ、カスタムレンダラーを使用しているときに自動的にそのIDの行を与えるテーブルモデルを使用しているため、行はそのようにカウントされます。 – BRHSM

+0

それは私の指摘でした。行を自動的に順序付けしないでください。 ID番号は変更しないでください。 SQLテーブルのIDを使用して、JTableに表示します。 – camickr

答えて

1

でも、この質問にはあまり意味がありません。行を削除するたびにクエリを実行できます。あなたが知っておかなければならないのは、あなたが削除したIDだけです。

set @a=id-1 
go 
update tablename set [email protected]:[email protected]+1 

id-1あなたはID 5を削除する場合は、4にので、あなたの行6,7,8を設定することを意味..今5,6,7-です...

0

あなたは:あなたはこれを実行しますこの

String [] columnNames = {"Sno ","mysql ID","Name" }; 
DefaultTableModel dtm = new DefaultTableModel(columnNames ,0); 

実行クエリのようなあなたのTableModelにmysqlIDの列を追加し、コラム「MySQLのIDを」移入IDを使用してDB に、あなたがテーブルから削除することができ、この列を非表示にしたい場合は、これを入力することができますコンストラクタのコード

tableName.removeColumn(tableName.getColumnModel().getColumn(1));

あなたはJTableの中で特定の行のIDをしたい場合は、その(tabel)からそれを得ることができるモデル

mysqlLID = (int)dtm.getValueAt(tableName.getSelectedRow(), 1);

関連する問題