簡體   English   中英

根據最后一個自動增量主鍵檢索記錄,並在輸入字段中查看

[英]Retrieve a record base on last Auto Increment primary key and view in input field

我想從數據庫中基於上一個主鍵插入(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

您可以使用:

<div style="background:steelblue;">
    <form action=saveRecord.jsp>
        <%
            try {
                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()) {
                    out.print(rs.getInt(1));
                    out.print(rs.getString(2));
                    out.print(rs.getString(3));
                    out.print(rs.getString(4));
                    //Or you can use
//                            out.print(rs.getInt("Did"));
//                            out.print(rs.getString("ShipName"));
//                            out.print(rs.getString("Origin"));
//                            out.print(rs.getString("Port1"));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        %>
    </form>
</div>

last_insert_id()方法正在檢索last_id + 1表示如果您的最后一個id為9,則它正在檢索10並在where子句中對其進行比較,因此沒有等於10的id您的查詢正在檢索null,請嘗試此查詢(it為我工作)。

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

或者,如果您的主鍵(Did)設置為自動遞增,則可以使用此查詢獲取所需的結果

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM