Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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 这两个sql语句(JDBC)之间的区别是什么?_Java_Mysql_Sql_Jdbc - Fatal编程技术网

Java 这两个sql语句(JDBC)之间的区别是什么?

Java 这两个sql语句(JDBC)之间的区别是什么?,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,我想得到表中的最后一个id。首先,我这样做: String selectId = "SELECT MAX(id) FROM book_store.cart" ; PreparedStatement ps = conn.prepareStatement(selectId); rs = ps.executeQuery(); while(rs.next()){ autoIncKey = rs.getInt("id"); } 这里我得到了错

我想得到表中的最后一个id。首先,我这样做:

String selectId = "SELECT MAX(id) FROM book_store.cart" ;    
PreparedStatement ps = conn.prepareStatement(selectId);  
rs =  ps.executeQuery();
while(rs.next()){
    autoIncKey = rs.getInt("id");
}
这里我得到了错误“未找到列id”

然后,我将查询更改为以下内容:

String selectId = "SELECT id FROM book_store.cart ORDER BY id DESC LIMIT 1";

我想知道为什么第一个查询会给我一个错误,而第二个查询不会给我一个错误,如果它们返回的是相同的值?

第一个查询将返回一个列名称为
MAX(id)
的行

不是列最有用的名称,因此请更改查询以设置该列的别名,如下所示

SELECT MAX(id) id FROM book_store.cart

现在该列将被命名为
id
,并且
rs.getInt(“id”)
将正常工作

我遇到了很多愚蠢的问题,非常感谢!如果你能检查一下我昨天问的这个问题,但没有人回答,我将不胜感激。它稍微长一点,但我认为对任何有java经验的人来说都很容易。再次感谢!你为什么想要最新的身份证?如果要生成下一个id,这是错误的方法,请使用自动增量列,并使用JDBC生成的密钥工具获取生成的id。@MarkRotteveel Hi-Mark,正是因为这个问题,我对书店的逻辑有问题。我有表购物车,我想问
是否(购物车==null)插入购物车else//这里我想返回现有购物车
(这是购物车中的最后一个id)。我返回最后一个id可能是错误的,但我不知道如何解决它。如果你去链接看看,我将不胜感激。感谢请注意这样的逻辑:数据库中最新的购物车不一定是当前用户的最新购物车。如果您的逻辑错误,您可能正在跨用户共享购物车。@MarkrotVeel我理解,但如何将正确的购物车返回给正确的用户?有多种解决方案,如将用户与购物车关联(这允许每个用户有多个购物车),或将购物车与用户关联(每个用户只有一个购物车)。可能还有其他解决方案。