【问题标题】:mySQL - Get last added ID [duplicate]mySQL - 获取最后添加的 ID [重复]
【发布时间】:2018-11-26 13:36:17
【问题描述】:

我是一名新程序员(刚开始我的程序员教育)。

我正在尝试使用我的 SQL DB 中的最后一个 ID 设置“tempVenueId”属性:(在本例中为 idvenue = 12)

桌名:场地

idvenue | name        | address
-------------------------------
 1      | Khar        | 5
 2      | SantaCruz   | 3
 3      | Sion        | 2
 4      | VT          | 1
 5      | newFort     | 3
 6      | Bandra      | 2
 7      | Worli       | 1
 8      | Sanpada     | 3
 9      | Joe         | 2
10      | Sally       | 1
11      | Elphiston   | 2
12      | Currey Road | 1

我的代码:

Private int tempVenueId;
SqlRowSet rs1 = jdbc.queryForRowSet("SELECT MAX(idvenue) FROM venue;");
while(rs1.next())tempVenueId = rs1.getInt(0);

/*I have also tried with "while(rs1.next())tempVenueId = rs1.getInt(1);"
*/

当我在 intelliJ 中运行调试模式时,它仍然不起作用:

tempVenueId = 0 

【问题讨论】:

  • 所示代码会抛出异常,因为0是无效的列索引。

标签: java mysql rowmapper


【解决方案1】:

索引是从1而不是0,所以有两种解决方法:

while(rs1.next()){
   tempVenueId = rs1.getInt(1);
   break;
};

SqlRowSet rs1 = Jdbc.queryForRowSet("SELECT MAX(idvenue) as value FROM venue;");
while(rs1.next()){
  tempVenueId = rs1.getInt("value");
  break;
 }

【讨论】:

  • 我猜你不能使用索引0,无论如何?当您在 mySQL 表中工作时? - 它们总是从索引 1 开始 - 正确吗?。
  • jdbc 中的索引是从 1 而不是 0 开始的,您可以使用 Google 查找更多信息
【解决方案2】:

已解决 - 这个解决方案要容易得多....(我认为)。


String sql = "SELECT LAST_INSERT_ID();"; 
SqlRowSet rs = Jdbc.queryForRowSet(sql);
rs.next();
Venue VN = new Venue(rs.getInt(1));
tempVenueId = VN;

  • 现在我从 DB 获得最后一个 AUTO INCREMENTET ID

【讨论】:

  • 这不是使用 JDBC 的正确方法,它实际上并没有回答您提出的问题(或者,反过来,如果这是答案,您应该问一个不同的问题)。
  • @MarkRotteveel - 我对这一切都很陌生。我最终这样做了://在数据库中最后添加的地点检索 idvenue。 SqlRowSet rs = Jdbc.queryForRowSet("SELECT MAX(idvenue) as last_id FROM place;"); rs.next(); int currentVenueId = rs.getInt("last_id");
  • 查看重复项,这是获取插入记录 id 的正确方法(如果这是您想要的,如本答案所建议的那样)。如果你真的只想要最高的id,那么lucumt的答案就足够了。
猜你喜欢
  • 2016-12-18
  • 2011-05-13
  • 2021-03-10
  • 2014-01-20
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
相关资源
最近更新 更多