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..效果会非常好