【问题标题】:How to get max row ID of a database record with duplicate data [duplicate]如何获取具有重复数据的数据库记录的最大行 ID [重复]
【发布时间】:2019-08-06 08:00:05
【问题描述】:

我想获取为 "kashif" 插入的最后一行的 ID。

如何在 Java 中做到这一点?

我有一个包含列的数据库表:

 ___________________________________________________________________________
| id | name | card_number | cell_number |sms_verification|inserted_date_time|

id 设置为主键,自增。

通过 Java 将数据插入数据库工作 - 我有一个从用户那里获取输入的类,并且在同一个类中,我正在建立与数据库的连接。

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection connection = DriverManager.getConnection(
        "jdbc:sqlserver://localhost;instance=MSSQLSERVER;databaseName=RestApi;user=sa;password=coder182");
Statement statement = connection.createStatement();

String query = "insert into User_information(action_name, card_number , cell_number ,sms_verification ,  inserted_date_time)"
    + "values ('" + action_name + "','" + card_number + "', '" + cell_number + "' , '" + sms_verification
    + "', '" + now + "');";
statement.executeUpdate(query)

输入如下所示:

  1. kashif,28028209,239203084,yes
  2. abid,233000,6260616,no
  3. kashif,28028209,239203084,yes

【问题讨论】:

  • 强制性Little Bobby Tables 参考。永远不要相信用户输入。请使用参数化查询(在 Java 领域中也称为 Prepared Statements)而不是构建您自己的查询,这样您就可以避免人们删除您的表或窃取您的数据。或两者兼而有之。

标签: java sql-server jdbc


【解决方案1】:

我认为,您可以编写如下查询:

SELECT max(id) from <Table Name> where name = 'Kashif'

或者

SELECT id from <Table Name> where name = 'Kashif' Order by id desc Limit 1

【讨论】:

  • @Wasif,使用这些查询之一创建StatementPreparedStatement,并调用executeQuery() 以获取包含ID 的ResultSet
  • @GreenhouseVeg 谢谢。第一个给了我我期待的结果
【解决方案2】:

在您的 executeUpdate 语句中添加 Statement.RETURN_GENERATED_KEYS

Integer createdId = null;
int executeUpdate = createStatement.executeUpdate(insertSql, Statement.RETURN_GENERATED_KEYS);
ResultSet rs = createStatement.getGeneratedKeys();
if (rs.next()) {
    createdId = rs.getInt(1);
}
System.out.println(createdId);

【讨论】:

    【解决方案3】:

    我会建议对您的表架构进行设计更改。再创建一个记录last_updated_time的行,你可以根据这个key查询。

    last_updated_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    

    随着条目数量增长到表格中,这将使您的生活变得更加轻松。

    【讨论】:

      猜你喜欢
      • 2017-08-24
      • 2018-02-07
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2021-04-18
      • 2021-04-22
      • 2016-06-12
      相关资源
      最近更新 更多