java - 从存储过程中检索 Java 对象

标签 java sql stored-procedures

我是一名学生,对 Java 和存储过程不熟悉。 我正在尝试编写一个存储过程,该过程应该将表行作为 java 对象返回。

我有这张表: USER_TABLE(用户ID、用户名、出生日期)

&程序是:

 create or replace procedure "USER_OUT" (USERID in varchar2,UserObj out User)
 is 
 begin
 select * from user_table where 
 USERID = UserObj.USERID;

 end USER_OUT;

在 Java 中,我尝试调用此过程并检索对象:-

CallableStatement callableStatement = dh.con.prepareCall("{call USER_OUT(?)}");
User usr = new User();
callableStatement .setInt (1,"123");
usr1 = (User)callableStatement.getResultSet();
callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
callableStatement.executeUpdate();//getting exception as Object is invalid.

程序执行错误还是我遗漏了什么? 非常感谢任何帮助! 谢谢。

最佳答案

我认为您应该尝试通过传递用户 ID 来获取值。

CallableStatement callableStatement = dh.con.prepareCall("{call USER_OUT(?,?)}");
callableStatement.setString(1, "123");
callableStatement.setString(2, OracleTypes.CURSOR);//use OracleTypes.CURSOR
callableStatement.executeUpdate();//execute USER_OUT store procedure
//read the OUT parameter now
// get cursor and cast it to ResultSet
ResultSet rs = (ResultSet) callableStatement.getObject(2);
while (rs.next()) {
String userid = rs.getString(1);
...............................
}

关于java - 从存储过程中检索 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31516292/

相关文章:

java - 拒绝访问 - 无法在特定目录中创建文件

java - 为什么 Map.getOrDefault() 会警告 NullPointerException?

java - 同时迭代和修改java队列

java - 在初始化时检查 null

sql - 时间序列数据 - 查找状态转换时间

mysql - Mysql 一个存储过程中的多个插入查询

mysql - MySQL存储过程中的if语句,用于选择数据

mysql - 使用 MySQL 从字段中删除字符串

php - 在每次对话中获取最新消息

javascript - 使用 Javascript 从 MongoDB 返回中提取值。