如何使用JavaScript函数在JSP中使用按钮移动到数据库的最后一条记录

如何使用JavaScript函数在JSP中使用按钮移动到数据库的最后一条记录,java,javascript,html,database,jsp,Java,Javascript,Html,Database,Jsp,因此,我创建了一个代码,将数据库记录显示在html文本框中,我可以使用分配给按钮的javascript函数移动到下一条记录并向后移动一条记录。但是,我在创建一个允许我移动到最后一条记录的函数和一个返回到第一条记录的按钮时遇到了困难 <%@ page import="java.sql.*" %> <% Class.forName("com.mysql.jdbc.Driver");%> <HTML> <HEAD>

因此,我创建了一个代码,将数据库记录显示在html文本框中,我可以使用分配给按钮的javascript函数移动到下一条记录并向后移动一条记录。但是,我在创建一个允许我移动到最后一条记录的函数和一个返回到第一条记录的按钮时遇到了困难

<%@ page import="java.sql.*" %>
    <% Class.forName("com.mysql.jdbc.Driver");%>
    <HTML>
        <HEAD>
        </HEAD>
        <BODY>

            <FORM NAME="form1" METHOD="POST">
                <%
                    int current = 1;
                    if (request.getParameter("hidden") != null) {
                        current = Integer.parseInt(request.getParameter("hidden"));
                    }
                    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost", "root", "symphonia23");
                    Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                    statement.executeQuery("use books");
                    ResultSet resultset = statement.executeQuery("select * from books");

                    if (current < 1) {
                        current = 1;
                    }
                    resultset.last();
                    int rows = resultset.getRow();
                    if (current <= rows) {
                        resultset.absolute(current);
                    }
                %>

                Code: <input type="text" id="code"  value="<%=resultset.getString("BookCode")%>"><br>
                Book Title: <input type="text" name="Code" value="<%=resultset.getString("BookTitle")%>"><br>
                Book Price: <input type="text" name="Code" value="<%=resultset.getString("BookPrice")%>"><br>
                <BR>

                <INPUT TYPE="HIDDEN" NAME="hidden" VALUE="<%= current%>">
                <INPUT TYPE="BUTTON" VALUE="Next" ONCLICK="moveNext()">
                <INPUT TYPE="BUTTON" VALUE="Prev" ONCLICK="movePrevious()">
                 <INPUT TYPE="BUTTON" VALUE="First" ONCLICK="movefirst()">

            </FORM>





                <SCRIPT LANGUAGE="JavaScript">
                    <!--
                function moveNext()
                    {
                        var counter = 0
                        counter = parseInt(document.form1.hidden.value) + 1
                        document.form1.hidden.value = counter
                        form1.submit()
                    }
                    function movePrevious()
                    {
                        var counter = 0
                        counter = parseInt(document.form1.hidden.value) - 1
                        document.form1.hidden.value = counter
                        form1.submit()
                    }

                     function movefirst()
                      {
                        var counter = 0
                        counter = parseInt(document.form1.hidden.value) 
                        document.form1.hidden.value = counter
                        form1.submit()
                    }

                    // --> 
            </SCRIPT>
        </BODY>
    </HTML>


书名:
书价:

在moveFirst()方法中,行中有bug

counter = parseInt(document.form1.hidden.value) 
你必须移除它。它总是重写计数器值,而计数器必须等于0

         function movefirst()
                  {
                    document.form1.hidden.value = 0
                    form1.submit()
                }
使用函数,不可能(我认为)创建moveLast()方法,因为您不知道resultset的最后一个索引。因此,您必须创建新的参数='count',并将行(记录计数)值放入其中。 例如:

int rows = resultset.getRow();
request.setAttribute("count", rows);
这样,您的方法moveLast()将如下所示

                    function moveLast()
                  {
                    document.form1.hidden.value = parseInt(document.form1.count.value) 
                    form1.submit()
                }
对不起,我的英语:)


另外,最好使用延迟加载数据。尝试在查询中引入限制,并为记录的搜索计数创建第二个查询

获取有关结果集大小的信息:

int total = resultSet.size();
然后在函数中使用它,该函数将带您到达最后一个结果。这取决于一次显示多少结果。如果每次只显示一个结果,则只需将当前结果设置为最后一个结果:

function moveLast()
                {                                              
                    // array starts from 0  
                    document.form1.hidden.value = ${total} - 1;
                    form1.submit()
                }
否则,将其设置为显示的记录总数。例如,如果在文本框中显示5个结果,请使用:

function moveLast()
                {                                  
                    if(${total}>5){            
                    document.form1.hidden.value = (${total} - 5);
                    }else{
                    document.form1.hidden.value = 0;
                    }
                    form1.submit()
                }

我希望我正确理解了您的问题,并且我的代码没有任何错误。。我已经有一段时间没有使用JSP了:)

建议您阅读并将代码移出JSP。关于如何编写合适的应用程序,有很多很棒的教程。太棒了,正是我想要的。很高兴我能帮上忙。干杯