Java 使用mysql将ID_列值增加1
我编写的这段代码将jlabel内容增加了1。Java 使用mysql将ID_列值增加1,java,mysql,sql,Java,Mysql,Sql,我编写的这段代码将jlabel内容增加了1。 这非常适合SQLite数据库。但当我切换到MySQL时,相同的语法根本没有任何价值。请问是什么问题。代码如下: try{ String sql = "Select max(ID) from ad_form"; pst=con.prepareStatement(sql); rs=pst.executeQuery(); String one =rs.getString("max(ID)"); id.setText(
这非常适合SQLite数据库。但当我切换到MySQL时,相同的语法根本没有任何价值。请问是什么问题。代码如下:
try{
String sql = "Select max(ID) from ad_form";
pst=con.prepareStatement(sql);
rs=pst.executeQuery();
String one =rs.getString("max(ID)");
id.setText(one);
int all = Integer.valueOf(id.getText());
all=all+1;
id.setText(String.valueOf(all));
}catch(SQLException | NumberFormatException e ){
JOptionPane.showMessageDialog(null,e);
}
finally{
try{
rs.close();
pst.close();
}
catch(Exception ep){
ep.getMessage();
}
}
任何时候代码运行时,显示值的jlabel都是空的。问题是未命名表达式的命名。这将因数据库而异。因此,只要做:
Select max(ID) as max_id from ad_form
然后:
String one =rs.getString("max_id");
这将适用于任何数据库
我关心的是获取最大id。如果您希望将其递增1,并将其用于后续插入,那么这是错误的方法。相反,您应该使用一个
auto_increment
列。这在MySQL中仍然是有效的SQL语法。你检查过是否有错误吗?max(ID)
列返回时可能会使用不同的名称(例如,max(ID)
),在这种情况下,SELECT max(ID)AS fake_column_name FROM ad_form
仍然有效。错误消息是:在结果集@voteydisciplet开始之前,错误提示:非常感谢@VoteyDisciple。rs.next()是丢失的链接。非常感谢兄弟。这看起来是个坏主意。如果两个连接同时执行同一段代码会发生什么情况?我尝试了你的答案@Gordon。但还是不起作用。我希望每个成员都有一组唯一的int值作为id。这就是为什么我使用这个approach@RodneyNart . . . 您可能应该使用auto_increment
列。这应该在数据库中完成,在插入行时自动完成,而不是在应用程序中。谢谢兄弟。我会听从你的劝告。万分感激