Java 同步MySQL ID';具有JTable行的s
我有一个程序,它使用MySQL表中的inf在Java 同步MySQL ID';具有JTable行的s,java,mysql,swing,Java,Mysql,Swing,我有一个程序,它使用MySQL表中的inf在JTable中创建行。我使用一个自动递增的ID,但是每当我从数据库中删除一行(以及因此而删除的JTable),然后添加一个新的行,我就在ID之间有一个gab 例如,现在我的MySQL表存储了3行ID1,2和4,它们作为行号为1,2和3的行存储在JTable中。这真的把我的逻辑搞砸了 因此,我想知道是否有一种方法可以使我从该表中删除一行时,下面的所有行都会更新其ID,以便在ID之间没有间隙 我希望通过查询可以实现这一点,是吗?即使这个问题没有多大意义,您
JTable
中创建行。我使用一个自动递增的ID
,但是每当我从数据库中删除一行(以及因此而删除的JTable
),然后添加一个新的行,我就在ID
之间有一个gab
例如,现在我的MySQL表存储了3行ID
1,2和4,它们作为行号为1,2和3的行存储在JTable
中。这真的把我的逻辑搞砸了
因此,我想知道是否有一种方法可以使我从该表中删除一行时,下面的所有行都会更新其ID,以便在ID
之间没有间隙
我希望通过查询可以实现这一点,是吗?即使这个问题没有多大意义,您也可以在每次删除行时执行查询。你只需要知道你删除了哪个id。然后执行以下操作:
set @a=id-1
go
update tablename set id=@a:=@a+1
id-1
意味着,如果删除id 5,则将其设置为4,因此第6、7、8行。。现在是5,6,7…您可以在tablemodel中添加一列mysqlID,如下所示
String [] columnNames = {"Sno ","mysql ID","Name" };
DefaultTableModel dtm = new DefaultTableModel(columnNames ,0);
运行查询并在数据库中用ID填充列“mysql ID”
若要隐藏此列,可以将其从表中删除,请在构造函数中键入此代码
tableName.removeColumn(tableName.getColumnModel().getColumn(1))代码>
如果您想要jtable中某一行的id,可以从它的(tabel)模型中获取它
mysqlLID=(int)dtm.getValueAt(tableName.getSelectedRow(),1)代码>我希望这可以通过查询实现,是吗?
-自动递增的ID不是表的一部分吗?您不能从SQL查询返回该ID,然后在JTable中显示该值吗?拥有表的键的意义在于它不会随时间而改变。因此,在删除行时重置ID是没有意义的。不,因为我使用的表模型会自动为行提供ID,例如,在使用自定义渲染器时,行是这样计数的。这就是我的观点。不要自动对行排序。身份证号码不应更改。使用SQL表中的ID显示在JTable中。