根据最后一个自动增量主键检索记录并在输入字段中查看

Posted

技术标签:

【中文标题】根据最后一个自动增量主键检索记录并在输入字段中查看【英文标题】:Retrieve a record base on last Auto Increment primary key and view in input field 【发布时间】:2017-04-10 06:55:59 【问题描述】:

我想根据最后一个主键插入(ID)从数据库中的表中检索记录,这就是我的程序的样子,但是当我运行它时,它会返回到空白页。查询错了吗??

<div style="background:steelblue;">
    <form action=saveRecord.jsp> <<----will save the record to other table
        <%
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        Connection conn =     DriverManager.getConnection("jdbc:mysql://localhost:3306/dssps", "root", "admin");
        String query = "select Did,ShipName,Origin,Port1 from decsfinal where   Did=LAST_INSERT_ID()";
        Statement st = conn.createStatement();
        ResultSet rs = st.executeQuery(query);
        if(rs.next())
        %>

        <label>ID</label>
        <input  name="Did" value="<%=rs.getInt("Did")%>">
        </br>

        <label>Ship Name</label>
        <input  name="ShipName" value="<%=rs.getString("ShipName")%>">
        </br>

        <label>Origin Port</label>
        <input  name="Origin" value="<%=rs.getString("Origin")%>">
        </br>

        <label>Destination Port</label>
        <input  name="Port1" value="<%=rs.getString("Port1")%>">
        </br>

        // here the submit button and close database

【问题讨论】:

【参考方案1】:

last_insert_id() 方法正在检索 last_id+1 意味着如果您的最后一个 id 为 9,则它正在检索 10 并在 where 子句中进行比较,因此没有 id 等于 10 您的查询正在检索 null,试试这个查询(它对我有用)。

select Did,ShipName,Origin,Port1 from decsfinal where Did = Last_insert_id()-1;

或 如果您的主键(Did)设置为自动递增,您可以使用此查询来获得您想要的结果

select max(Did) , ShipName ,Origin,Port1 from decsfinal;

【讨论】:

以上是关于根据最后一个自动增量主键检索记录并在输入字段中查看的主要内容,如果未能解决你的问题,请参考以下文章

如果自动增量字段不是第一个,jOOQ 可以支持复合主键吗

ms 根据先前记录的日期访问自动填充日期字段

以编程方式获取自动增量主键列

什么可能导致自动增量主键字段(mysql)上的重复 ID?

SQL 最佳实践 - 可以依靠自动增量字段按时间顺序对行进行排序吗?

Php - 无法创建新的数据库记录,因为主键为空(自动增量)