根据输入表单从数据库中检索数据

时间:2016-12-22 08:18:52

标签: html database jdbc

我试图从数据库中检索数据。我用jdbc连接数据库。我有一个文本字段和一个提交按钮。当我在文本字段中键入文本并单击“提交”时,它会显示一个空白页面,并且控制台中没有错误。 我没有从数据库中获取数据。我的数据库名称是新的,表名是列表。对此有何解决方案?

(Sql,My),(Dev,Prod)

下面是main.jsp文件,用于根据输入表单

从数据库中获取数据

main.jsp中

             <!DOCTYPE html>
                  <html>

                  <head>
                    <title>D3</title>
                    <script>
                      function getData() {
                        {
                          xmlHttp = GetXmlHttpObject();
                          var id = document.getElementById("input").value;
                          var url = "main.jsp"; 
                          url = url + "?input=" + id;
                          xmlHttp.onreadystatechange = stateChanged;
                          xmlHttp.open("GET", url, true);
                        }
                        xmlHttp.send(null);


                        function stateChanged() {
                          if (xmlHttp.readyState === 4 || 
                      xmlHttp.readyState === "complete") {
                            var showdata = xmlHttp.responseText;
                            document.getElementById("input").value
                         = showdata;

                          }
                        }
                      }
                    </script>
                  </head>

                  <body>
                    <div id="type">
                      <form>
                        <table>
                          <tr>
                            <td>
                              <input type="text" name="input">
                            </td>
                          </tr>
                          <tr>
                            <td>
                              <input type="submit" 
                name="submit" onclick="getdata();" </td>
                          </tr>
                        </table>
                      </form>
                    </div>
                  </body>

                  </html>

更新的脚本:

          <%@page import="java.sql.ResultSet"%>
        <%@page import="java.sql.*"%>
        <%@page import="java.sql.DriverManager"%>
        <%@page import="java.sql.Connection"%>
        <%@page import="java.beans.Statement"%>
        <%
            String ch = request.getParameter("type").toString();
            System.out.println(ch);
            String data ="";
            try{
                Class.forName("com.mysql.jdbc.Driver");
                Connection con=DriverManager.getConnection
           ("jdbc:mysql://localhost:3306/new","root","admin321"); 
               PreparedStatement st=con.prepareStatement
          ("select * from list where input in name=?");



              ResultSet rs=st.executeQuery(); 


                while(rs.next())
                {
                    data = rs.getString("name") + ": " +
              rs.getString("child name");
                }
                out.println(data);
                System.out.println(data);
            }
            catch(Exception e) {
                System.out.println(e);
            }
        %>

2 个答案:

答案 0 :(得分:0)

表单正在执行操作,即使您未指定它也是如此。您应该阻止发生默认事件(获取新页面),或者指定您要POST数据而不是GET。

我不确定这是否是实际答案,但这有可能解决您的问题。使用客户端javascript来防止表单操作发生。使用jQuery的一个例子:

($(document).ready(function(){
$(".your-form").submit(function(e){
   // e stands for the event generated by the submit
   e.preventDefault();
   // the rest of your logic
   });
  });
)();

答案 1 :(得分:0)

我可以在您的代码中找到以下问题。

  • 我在jsp代码中的任何地方找不到你在预备语句后面设置'name'属性的值。

  • String ch = request.getParameter("type").toString();获取type参数的值。但是,在url = url + "?input=" + id;行中,您要设置input参数。

  • return false处没有getdata()来阻止表单提交。将return false;添加到getdata()函数的末尾 尝试解决上述问题并检查您是否仍未获得所需的输出。