我现在有这个:
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;
}
我希望在我的while(rset.next())下再添一个字符串ssn ..当我在myuser.setuserSSN(rset.getString(3));
下添加myuser.setuserName(rset.getString(2));
时,它给我错误..我已经更新了我的获取用户SSN的过程如何在这里获得ssn号码..我需要修改什么...还有一件事我通过使用游标cstmt.registerOutParameter(3,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
答案 0 :(得分:0)
看起来userBean
类没有方法setuserSSN
。使用传统的情况,这将被写为'setUserSSN'(大写U
)。如果存在setuserSSN
方法,请检查它是否需要单个String
参数。
除非你有一些既定的约定,否则userBean
可能最好重命名为UserBean
,因为类通常以大写字母开头。
答案 1 :(得分:0)
您没有从存储过程中选择SSN。你有三个输出参数,1 =用户ID,2 =用户名,3 =光标。当您尝试添加(rset.getString(3));
时,它会尝试将光标设置为字符串并将其传递给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.setuserid(rset.getString("userID").trim()); myuser.setuserName(rset.getString("username"));
等。