【问题标题】:How to display all row in ResultSet using XML DOM, jsp and ajax?如何使用 XML DOM、jsp 和 ajax 显示 ResultSet 中的所有行?
【发布时间】:2015-09-09 00:47:31
【问题描述】:
    in database

当我从数据库onchange of dropdown中获取数据时,实际上这是实时场景,使用jsp你可以集成任何类型的框架作品(在.java文件中),概念是一样的。

if i run this code it show the first row information 

<html>
    <head>
    <script type="text/javascript">
    function loadXMLDoc()
    {
    var xmlhttp;
    var keys=document.dummy.sele.value
    var urls="db_fetch.jsp?ok="+keys
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
    if (xmlhttp.readyState==4)
    {
    var some=xmlhttp.responseXML.documentElement;
    document.getElementById("a").innerHTML=some.getElementsByTagName("empno")[0].childNodes[0].nodeValue;
    document.getElementById("b").innerHTML=some.getElementsByTagName("empname")[0].childNodes[0].nodeValue;
    document.getElementById("c").innerHTML=some.getElementsByTagName("empaddr")[0].childNodes[0].nodeValue;
    }
    }
    xmlhttp.open("GET",urls,true);
    xmlhttp.send();
    }
    </script>
    </head>
    <body>

    <form name="dummy">
    <select name="sele" onchange="loadXMLDoc()">
    <option>value</option>
    <option value="100">100</option>
    <option value="101">101</option>
    </select>
    </form>

    id: <span id="a"></span><br>
    name: <span id="b"></span><br>
    address: <span id="c"></span>

    </body>
    </html>

db_fetch.jsp

<%@ page import="java.io.*,java.sql.*" %>
<%@ page contentType="text/html" pageEncoding="UTF-8"%>

<%

response.setContentType("text/xml");
String sn=request.getParameter("ok");
int i=Integer.parseInt(sn);

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con =DriverManager.getConnection("jdbc:oracle:thin:@www.java4s.com:1521:XE","system","admin");
Statement st=con.createStatement();
ResultSet rs = st.executeQuery("select * from emp where empno="+i);
if(rs.next())
{

out.println("<emp>");
out.println("<empno>"+rs.getInt(1)+"</empno>");
out.println("<empname>"+rs.getString(2)+"</empname>");
out.println("<empaddr>"+rs.getString(3)+"</empaddr>");
out.println("</emp>");

}

rs.close();
st.close();
con.close();

%>

上面的代码结果是

我需要一个结果

id 100,

命名java4s

美国地址

id 100,

命名 php4s

美国地址

id 100,

给visa4s命名

美国地址

id 100,

命名 usa4s

美国地址

我认为这里的代码可能会改变

{
    var some=xmlhttp.responseXML.documentElement;
    document.getElementById("a").innerHTML=some.getElementsByTagName("empno")[0].childNodes[0].nodeValue;
    document.getElementById("b").innerHTML=some.getElementsByTagName("empname")[0].childNodes[0].nodeValue;
    document.getElementById("c").innerHTML=some.getElementsByTagName("empaddr")[0].childNodes[0].nodeValue;
    }

在数据库地址栏中有

【问题讨论】:

  • 您是在尝试将上表打印到您的页面中吗?
  • 以上代码显示结果集中的第一行,但我需要结果集中的所有行
  • 我需要一个输出链接这个'id 100,名称java4s,地址美国:(\n)id 100,名称php4s,地址美国:(\n)id 100,名称vish4s地址美国:( \n)id 100, name usa4s address usa

标签: javascript jquery ajax xml jsp


【解决方案1】:

您需要使用 while 循环来打印所有 ResultSet 数据。

您的 empno 不是 unique 列类型,因此基本上您需要其他方式来识别第二行。比如count、empname等等……

int count=0;
while(rs.next()){
  count++;
  if(count!=2)return;//display only the second row
  //if(!"php4s".equals(rs.getString(2)))return;//display only the php4s row
  out.println("<emp>");
  out.println("<empno>"+rs.getInt(1)+"</empno>");
  out.println("<empname>"+rs.getString(2)+"</empname>");
  out.println("<empaddr>"+rs.getString(3)+"</empaddr>");
  out.println("</emp>");

}

【讨论】:

  • 以上代码显示结果集中的第一行,但我需要结果集中的所有行
  • 'id 100,名称 php4s 地址美国'id 100,名称 java4s 地址美国,id 100,名称 vish4s 地址美国 id 100,名称 usa4s 地址美国
  • 我需要一个输出链接这个'id 100,名称java4s,地址美国:(\n)id 100,名称php4s,地址美国:(\n)id 100,名称vish4s地址美国:( \n)id 100, name usa4s address usa
  • 我认为这里我们需要更改 var some=xmlhttp.responseXML.documentElement; document.getElementById("a").innerHTML=some.getElementsByTagName("empno")[0].childNodes[0].nodeValue; document.getElementById("b").innerHTML=some.getElementsByTagName("empname")[0].childNodes[0].nodeValue; document.getElementById("c").innerHTML=some.getElementsByTagName("empaddr")[0].childNodes[0].nodeValue;
  • 是的,您需要在ajax callback zone中更改您的代码。使用for循环显示和获取数据。
猜你喜欢
  • 2011-06-19
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-17
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
相关资源
最近更新 更多