Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 同步MySQL ID';具有JTable行的s_Java_Mysql_Swing - Fatal编程技术网

Java 同步MySQL ID';具有JTable行的s

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之间没有间隙 我希望通过查询可以实现这一点,是吗?即使这个问题没有多大意义,您

我有一个程序,它使用MySQL表中的inf在
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中。