java可调用语句

java可调用语句,java,Java,我现在有这个: public java.util.Vector getList() { java.util.Vector myuserList = new java.util.Vector(); DbUtil db = null; java.sql.CallableStatement cstmt = null; ResultSet rset = null; db = new DbUtil(); cstmt = db.prepa

我现在有这个:

public java.util.Vector getList() {

    java.util.Vector myuserList = new java.util.Vector();
    DbUtil db = null;
    java.sql.CallableStatement cstmt = null;
    ResultSet rset = null;


        db = new DbUtil();
        cstmt = db.prepareCall("{ call sample.user.get_user_list(?, ?, ?) }");

        cstmt.registerOutParameter(1,OracleTypes.CHAR);
        cstmt.registerOutParameter(2,OracleTypes.VARCHAR);
        cstmt.registerOutParameter(3,OracleTypes.CURSOR);

            cstmt.execute();

        }

        rset = (ResultSet) cstmt.getObject(3);
        if (rset != null) {
            while(rset.next()) {
                userBean myuser = new userBean();
                myuser.setuserid(rset.getString(1).trim());
                myuser.setuserName(rset.getString(2));


                myuserList.addElement(myuser);
            }
        }
                return myuserList;
             }
我想在我的whilerset下再获得一个字符串ssn。下一个。。当我刚刚添加这个myuser.setuserSSNrset.getString3;在myuser.setuserNamerset.getString2下;这给了我错误。。我已经更新了获取用户SSN的过程,因此如何在此处获取SSN号。。我必须修改什么。。还有一件事,我通过使用cursor cstmt.registerOutParameter3、OracleTypes.cursor获得所有三个userid、username和userSSN;前两个可调用语句用于过程中的异常。。请帮忙

这是我得到的错误

compile:
 [exec] com\javabean\userBean.java:188: cannot resolve symbol
 [exec] symbol  : variable myuser
 [exec] location: class com.javabean.userBean
 [exec]                                     myuser.setuserSSN(rset.getString(3));
 [exec]                                         ^
 [exec] 1 error
看起来userBean类没有方法setuserSSN。使用常规的大小写,它将被写为“setUserSSN”大写U。如果有setUserSSN方法,请检查它是否接受单个字符串参数


除非您已经建立了某种约定,否则最好将userBean重命名为userBean,因为类通常以大写开头。

您不是从存储过程中选择SSN。您有三个out参数,1=用户id,2=用户名,3=光标。当您尝试添加rset.getString3时;它试图将光标设置为字符串,并将其传递给set SSN方法。试试这个:

public java.util.Vector getList() { 

java.util.Vector myuserList = new java.util.Vector(); 
DbUtil db = null; 
java.sql.CallableStatement cstmt = null; 
ResultSet rset = null; 


    db = new DbUtil(); 
    cstmt = db.prepareCall("{ call sample.user.get_user_list(?, ?, ?, ?) }"); 

    cstmt.registerOutParameter(1,OracleTypes.CHAR); 
    cstmt.registerOutParameter(2,OracleTypes.VARCHAR); 
    cstmt.registerOutParameter(3,OracleTypes.VARCHAR);
    cstmt.registerOutParameter(4,OracleTypes.CURSOR); 

        cstmt.execute(); 

    } 

    rset = (ResultSet) cstmt.getObject(4); 
    if (rset != null) { 
        while(rset.next()) { 
            userBean myuser = new userBean(); 
            myuser.setuserid(rset.getString(1).trim()); 
            myuser.setuserName(rset.getString(2)); 
            myuser.setuserSSN(rset.getString(3));

            myuserList.addElement(myuser); 
        } 
    } 
            return myuserList; 
         } 
并确保存储过程选择SSN


我自己正在学习如何使用存储过程,但是当使用查询字符串时,您会按名称引用返回的字段。我还没有掌握这一点,但我认为您可以返回游标,然后像这样设置userBean变量:myuser.setuseridrst.getStringuserID.trim;myuser.setuserNamerset.getStringusername;等等。

关于错误的信息仍然不足。请向我们展示您在这里发布的内容。缺少错误的第一行。我已经有了所有这些内容:public userBean{userid=new String;userName=new String;userSSN=new String;}public String getuserid{return userid;}public void setuseridString s{userid=s;}public String getuserName{return userName;}public void setuserNameString s{userName=s;}public String getuserSSN{return userSSN;}public void setuserSSNString s{userSSN=s;}啊,我明白了。重新检查OP时,错误是在抱怨myuser。您是否将setuserSSN调用直接添加到其他调用下面?请确保其间没有任何右括号。看起来myuser超出了范围。是的,我不会在其中更改任何内容。如果我删除userSSN..效果会非常好