下面的函数,想的挺好, 就是调试不通.....我想做的就是执行SQL语句返回第一个参数对应的值, 
麻烦哪位老鸟指点一下, 问一下 ,<%!  这么写, 是什么意思,我查一些资料说是全局变量的意思... 迷糊.... 希望讲解一下,
代码如何调试通...  下面代码报错...
以下代码 页面里面 都正常运行, 我现在就是想写函数, 就在JSP页面里面写....<%!String Gets(String sqlmyVar)
{
String Temp=null;
Statement stmtmyVar=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
//out.print(sqlmyVar);
ResultSet RsmyVar=stmtmyVar.executeQuery(sqlmyVar);   
RsmyVar.next(); 
 Temp=RsmyVar.getString(1);
RsmyVar.close();  
stmtmyVar.close(); 
return Temp;
}%> 

解决方案 »

  1.   

    Java中,<%!... %> 是定义变量的,JSP编译后就是Servlet,你也知道Servlet就是个Java文件,你要写函数,当然没问题,只是很少会这样写!
      

  2.   

    我没用那个...不会,, 所有的东西都是在 jsp页面里面写, 
      

  3.   

    jsp三种脚本元素
    <%! 声明 这里定义的变量是全局变量%><% 脚本 这里定义的是局部变量%><%=对象%>
      

  4.   

    conn.createStatement??
    你的conn 从哪里来的?为何没有获取以及释放Connection的代码?
      

  5.   

    JSP 我有些初级....
    conn.createStatement??在代码的最上面已经声名了, 不知道您会ASP 不, 我的模式就是跟着ASP的下来的,
    代码里面都是流程划的.代码里面没用使用任何javabean...现在有个地方需求重复查找一些数据,  我把那个代码用类的形式写就能过去?  我试试. ... 迷糊中 所以求教
      

  6.   

    RsmyVar.next();   
      Temp=RsmyVar.getString(1); 这段代码你确定是正确的么???我记着.next()这个方法会反回boolean类型值啊??你应该用个IF或者WHILE判断吧???不知道我说的对不对,小弟也是新手。只是提出自己看到的一点问题,至于对不对,还请高手赐教哈!
      

  7.   

    <%! 在这里声明的变量,就像java文件声明一个属性一样  %>
    <%%>声明的变量都在_jspService()方法里面
      

  8.   

    回应12楼
    代码本身没有问题,如果你确认肯定有返回结果,就无需判断,直接next();
    否则,你提到的就是正确的
    if(rs.next(){
      ..
    }
    ...
      

  9.   

    在网上 查到的, 他们这么写 就不报错, 用jsp也可以用函数,给你个简单的例子;  
     <HTML>  
         <HEAD>  
           <TITLE>test.jsp</TITLE>  
         </HEAD>  
         <BODY>  
    <%@  page  import="java.io.*"%>  
    <%!  
    public  void  outtopage(  JspWriter  out,int  No)  
    {  try{  
       if  (No==1)  
           out.print("a");  
       if  (No==2)  
           out.print("b");  
           }catch(Exception  e){}  
    }  
    %>  
    <%outtopage(out,2);%>  
         Place  test.jsp's  content  here.  
         </BODY>  
    </HTML>  
      

  10.   

    我想实现,在JSP页面里面写 函数 或是类, 然后执行,SQL 语句, 返回对应字段的值, 我怎么才可以做到,
    不用JAVABEAN
      

  11.   

    建议用JAVABEAN,不要局限在ASP的开发模式中,有一个好的框架不用为什么偏的去用这些不好的呢,初学先从最基本的MVC学起啊
      

  12.   

    哎 ... 要达到目的,  晕乎晕乎的....
    JSP页面最终是被容器解释成为Servlet的,JSP页面中的代码被解释为其生成的Servlet中的doService方法内的代码.但如果加上了感叹号,则相当于在Servlet中重新定义了一个方法: 
    <%! //此处有感叹号 
    private String aVariableOfClassScope; private void aMethod(){ 
    ...; 

    %> 
    <% //此处无感叹号,代码将会在doService方法中 
    ...; 
    %>
    如果想达到相互调用的效果,起始页也是有方法的 
    简单的途径是将 
    <%!%> 
    中定义的方法修改为静态方法 
    不过不建议这个做 
    因为这样做还不如专门写个工具类里面全是静态方法在jsp中只要import一下就可以了 
    复杂的途径是 
    所有的jsp起始都将编译为servlet 
    而这个些servlet都继承一个同一个父类 
    你去复写这个父类为他多添加接口... 
    很难说清楚了,所以建议用struts吧
      

  13.   

    简单测试可以的.  
      <%! public String fun(String aa){
               System.out.println("ddddddddd");
               String bb="fff";
               return bb;
        }
            %>
        <%页面得到要查询的字段的值,再提交本页,调用一个方法,显示数据
           
           %>
      

  14.   

     <%! public String fun(String aa){
              String bb="";
               try {
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    Connection conn;
    conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:2433;User=sa;Password=sa;DatabaseName=pubs");

    Statement st = conn.createStatement();   
    String sql="select * from ordertable";    
    ResultSet rs=st.executeQuery(sql);
    rs.next();
     bb=rs.getString(1);
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return bb;
        }
        
        %>
        
        <% 
        String bb=fun("aaa");
          System.out.println(bb);
        %>
    可以
      

  15.   

    查找问题的方法,先看看你的sql语句是不是捞到数据了,把他放到其他的查询工具里面运行一下,看看捞出来数据没有,界面上你多搞几个out。print,看看你的这个方法有没有被调用到,一步一步就可以找到哪里出了问题了。
      

  16.   

    23楼写的 很详细,辛苦了,  报错和我的一样, 不知道您是否调试通过了 ?
    我的conn 已经在 我函数的上方定义了, 属于全局变量 那个对象也引用了
      

  17.   

    以下代码已经测试成功:
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@page import="java.sql.Connection"%>
    <%@page import="java.sql.DriverManager"%>
    <%@page import="java.sql.Statement"%>
    <%@page import="java.sql.ResultSet"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>Test.jsp</title>
      </head>
      
      <body>
        <%!
         String gets(String sqlVal){
         String temp = null;
         Connection conn = null;
         try {
         Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
         conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs","sa","aa");
         Statement s = conn.createStatement();
         ResultSet rs = s.executeQuery(sqlVal);
         rs.next();
         temp = rs.getString(1);
         rs.close();
         s.close();
         conn.close();
         }catch (Exception ex) {
         ex.printStackTrace();
         }
        
         return temp;
         }
        %>
        
        <p><%=gets("select * from authors") %></p>
      </body>
    </html>
      

  18.   

    就用<% 你的代码 %>试试看,