我写了一个输入订单编号.并查询的小程序.如下!
<%@ page contentType="text/html;charset=gb2312"%> 
<%@ page import="java.sql.*"%>
<title>查询</title>
</head>
<body>
<hr>
<form name="form1" method="post" action="">
  <div align="center">订单查询:
    <input name="v1" type="text" id="v1" value="">
    <input name="fiand" type="submit" id="fiand" value="提交">
  </div>
</form>
<hr>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
String url="jdbc:microsoft:sqlserver://192.168.10.72:1433;DatabaseName=mysql"; 
String user="sa"; 
String password=""; 
Connection conn= DriverManager.getConnection(url,user,password); 
Statement stmt=conn.createStatement
(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql ="select * from test ";
String  v1 = request.getParameter("v1");
if(v1!=null){
%>
   <table width="100%"  border="0" cellspacing="1" bgcolor="#000000">
  <tr bordercolor="#000000" bgcolor="#FFFFFF">
    <td width="7%" bgcolor="#FFFFFF"><div align="center">订单编号</div></td>
    <td width="19%" bgcolor="#FFFFFF"><div align="center">客户名称</div></td>
    <td width="10%" bgcolor="#FFFFFF"><div align="center">产品名称</div></td>
    <td width="24%" bgcolor="#FFFFFF"><div align="center">规格型号</div></td>
    <td width="16%" bgcolor="#FFFFFF"><div align="center">配置编码</div></td>
    <td width="2%" bgcolor="#FFFFFF"><div align="center">位单</div></td>
    <td width="2%" bgcolor="#FFFFFF"><div align="center">数量</div></td>
    <td width="20%" bgcolor="#FFFFFF"><div align="center">备注</div></td>
  </tr>
  <%
  sql="select * from test where dd=v1 ";/////DD为库里的订单号字段
  ResultSet rs=stmt.executeQuery(sql);
  while(rs.next())%>
  
  <tr bordercolor="#000000" bgcolor="#FFFFFF">
    <td height="20"><%=rs.getString(1)%></td>
    <td><%=rs.getString(2)%></td>
    <td><%=rs.getString(3)%></td>
    <td><%=rs.getString(4)%></td>
    <td><%=rs.getString(5)%></td>
    <td><%=rs.getString(6)%></td>
    <td><%=rs.getString(7)%></td>
    <td><%=rs.getString(8)%></td>
  </tr>
</table>
     
<%}
rs.close(); 
stmt.close(); 
conn.close(); 
%></body>
</html>运行后出现错误是什么意思!该怎么解决...
An error occurred at line: 54 in the jsp file: /sql/fiand.jsp
Generated servlet error:
rs cannot be resolved

解决方案 »

  1.   

    所有字段在数据库中都是String吗?你都用的rs.getString取的,可能有问题
      

  2.   

    那里面有 int.char.nvarchar 型.
    我用的是SQL 2000 那我该怎么取呢!
      

  3.   

    int  rs.getInt
    char rs.getString
    nvarchar rs.getString
      

  4.   

    sql="select * from test where dd=v1 ";/////DD为库里的订单号字段  我的这一句对不对.DD是int型  . 
      如果输入一个"客户名称"为关键字.
      库里的字段字 kh 为nvarchar 型.sql="select * from test where kh=v1 ";对不对!对不起我是刚学的.麻烦你了!!
      

  5.   

    int在sql中可以加引号也可以不加,一般不加其他字符型的必须加你的第二条改为sql="select * from test where kh='v1' "
      

  6.   

    把你的查询语句打印出来,
    再到sql分析器执行一下
      

  7.   

    <td height="20"><%=int rs.getint(1)%></td>
        <td><%=nvarchar (rs.getString(2))%></td>
        <td><%=nvarchar (rs.getString(3))%></td>
        <td><%=nvarchar (rs.getString(4))%></td>
        <td><%=nvarchar (rs.getString(5))%></td>
        <td><%=chat (rs.getString(6))%></td>
        <td><%=int (rs.getint(7))%></td>
        <td><%=nvarchar (rs.getString(8))%></td>对不起.出现这样错误!An error occurred at line: 43 in the jsp file: /sql/fiand.jsp
    Generated servlet error:
    Syntax error on token "int", delete this tokenAn error occurred at line: 49 in the jsp file: /sql/fiand.jsp
    Generated servlet error:
    Syntax error on token "int", delete this token
      

  8.   

    我用的是SQL 2000 和 TOMCAT sql分析器有用吗!
      

  9.   

    sql="select * from test where dd=v1 ";
      ResultSet rs=stmt.executeQuery(sql);
      while(rs.next())%>
      
      <tr bordercolor="#000000" bgcolor="#FFFFFF">       
        <td height="20"><%=int rs.getInt(1)%></td>
        <td><%=nvarchar (rs.getString(2))%></td>
        <td><%=nvarchar (rs.getString(3))%></td>
        <td><%=nvarchar (rs.getString(4))%></td>
        <td><%=nvarchar (rs.getString(5))%></td>
        <td><%=chat (rs.getString(6))%></td>
        <td><%=int (rs.getInt(7))%></td>
        <td><%=nvarchar (rs.getString(8))%></td>
      </tr>
    </table>还是这样!是为什么啊!
    An error occurred at line: 43 in the jsp file: /sql/fiand.jsp
    Generated servlet error:
    Syntax error on token "int", delete this tokenAn error occurred at line: 49 in the jsp file: /sql/fiand.jsp
    Generated servlet error:
    Syntax error on token "int", delete this token
      

  10.   

    你的SQL语句里的v1是什么??
      

  11.   

    v1如果是个int型的变量的话要用+连接
    sql="select * from test where dd="+v1;
      

  12.   

    sql="select * from test where dd="+v1;试试
      

  13.   

    我上面还有一个错的!就是最后的"}"
    放在
    rs.close(); 
    stmt.close(); 
    conn.close(); 后面!
      

  14.   

    sql="select * from test where dd="+v1;36:   </tr>
    37:   <%
    38:   sql="select * from test where dd="+v1;
    39:   ResultSet rs=stmt.executeQuery(sql);
    40:   while(rs.next())%>
    41:   
    42:   <tr bordercolor="#000000" bgcolor="#FFFFFF">       
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]第 1 行: '=' 附近有语法错误。
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
    org.apache.jsp.sql.fiand_jsp._jspService(fiand_jsp.java:129)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      

  15.   

    while(rs.next())%> 少一个大括号while(rs.next()){%>
      

  16.   

    哈哈!!OK了!但是不输查询的值会提示:  怎么办呢???谢谢!!!
    36:   </tr>
    37:   <%
    38:   sql="select * from test where dd="+v1;
    39:   ResultSet rs=stmt.executeQuery(sql);
    40:   while(rs.next()){%>
    41:   
    42:   <tr bordercolor="#000000" bgcolor="#FFFFFF">       
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      

  17.   

    if(v1!=null && !v1.trim().equals(""))
      

  18.   

    我记得无论是什么普通类型(BLOB当然不行)用getString都是不会错的
    这个JSP出错的原因在于<%}
    rs.close(); 上面的}打错了,应该放在conn.close();后面。因为你的ResultSet rs不是全局的。
      

  19.   

    晕倒,SQL也错了
    应该是sql="select * from test where dd='" + v1 + "'";