肯定是有问题的
JS中的i变量没有定义,也不知是从什么地方来的?

解决方案 »

  1.   

    <script language='javascript'>function sortTable(){ alert('<%=rs.getString(i)%>');
    }
    </script>
      

  2.   

    不过粗略地看了一下你的代码,你的代码都有问题,JSP程序是从上到下顺序执行,可是你的rs都close了,你在最下面的JS地方还在调用rs.getString,这样是不行的,你必须在while(rs.next())的时候就对rs进行操作,然后把得到的信息保存到变量里面.再输出给JS使用
    ----------------------------------------------------------------------
    <%@ page language="java" import="java.io.*,java.sql.*,javax.sql.* ,javax.naming.*"%>
    <%@ page contentType="text/html;charset=gb2312" %> 
    <% 
    String sDBDriver = "oracle.jdbc.driver.OracleDriver"; 
    String sConnStr = "jdbc:oracle:thin:@my-tomato:1521:oracle";Connection conn = null; 
    ResultSet rs = null; 
    Statement stmt = null; 
    try 

    Class.forName(sDBDriver); 
    conn = DriverManager.getConnection(sConnStr,"TEST","test"); 
    stmt = conn.createStatement(); 
    rs = stmt.executeQuery("select * from PODMStockBillDetail");   //根据条件获得结果集合
    ResultSetMetaData  rsMeta=rs.getMetaData(); //获取数据库元集合
    int column=rsMeta.getColumnCount(); //获取表的列数 out.println("<table id=downloadList border=3>");
    out.println("<tr bgcolor=#F96475>");
    for(int j=1;j<column;j++){
    out.println("<td><A href='javascript:sortTable()'><IMG SRC='pic/mini079.gif'></A>"+rsMeta.getColumnName(j)+"</td>"); //显示表中列名
    }
    out.println("</tr>");
    while (rs.next()){
      out.println("<tr>");
    for(int i=1;i<column;i++){
      String value=rs.getString(i);
    out.println("<td>" + value + "</td>");
    %>
      <script language='javascript'>
    function sortTable(){
    alert('<%=value%>');
    }
    </script>
    <%
    }
    out.println("</tr>");

    out.println("</table>");rs.close();   
    stmt.close();   
    conn.close();  

    catch(Exception e) 

    out.println(e); 

    %>
      

  3.   

    <%@ page language="java" import="java.io.*,java.sql.*,javax.sql.* ,javax.naming.*"%>
    <%@ page contentType="text/html;charset=gb2312" %> 
    <% 
    String sDBDriver = "oracle.jdbc.driver.OracleDriver"; 
    String sConnStr = "jdbc:oracle:thin:@my-tomato:1521:oracle";Connection conn = null; 
    ResultSet rs = null; 
    Statement stmt = null; 
    try 

    Class.forName(sDBDriver); 
    conn = DriverManager.getConnection(sConnStr,"TEST","test"); 
    stmt = conn.createStatement(); 
    rs = stmt.executeQuery("select * from PODMStockBillDetail");   //根据条件获得结果集合
    ResultSetMetaData  rsMeta=rs.getMetaData(); //获取数据库元集合
    int column=rsMeta.getColumnCount(); //获取表的列数 out.println("<table id=downloadList border=3>");
    out.println("<tr bgcolor=#F96475>");
    for(int j=1;j<column;j++){
    out.println("<td><A href='javascript:sortTable()'><IMG SRC='pic/mini079.gif'></A>"+rsMeta.getColumnName(j)+"</td>"); //显示表中列名
    }
    out.println("</tr>");
    while (rs.next()){
      out.println("<tr>");
    for(int i=1;i<column;i++){
      String value=rs.getString(i);
       out.println("<td>" + value + "</td>");
    }
    out.println("</tr>");

    out.println("</table>");//rs.close();   
    //stmt.close();   
    //conn.close();  

    catch(Exception e) 

      out.println(e); 

    %><script language='javascript'>
    function sortTable(){
    alert('<%=value%>');
    }
    </script>
    如果是我这样写,把js代码放在下面为什么就会出错了呢?报错是value未定义.
      

  4.   

    for(int i=1;i<column;i++){
      String value=rs.getString(i);
       out.println("<td>" + value + "</td>");
    }因为你的value是定义在FOR循环中的,超出了它的作用范围,所以会报错提示没定义/...