Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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_列值增加1_Java_Mysql_Sql - Fatal编程技术网

Java 使用mysql将ID_列值增加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(

我编写的这段代码将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(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
列。这应该在数据库中完成,在插入行时自动完成,而不是在应用程序中。谢谢兄弟。我会听从你的劝告。万分感激