我尝试使用Java在Oracle 11g中插入记录。我还在学习Java。
我要调用存储过程来插入记录。用户表中的主键是user_id。我在user_id
上也有一个递增2的序列现在,在Java中设置输入参数时,我需要在user_id中传递什么?另外,在日期参数的情况下会是什么类型:
Users:user_id number (primary key), email varchar, created_date Date
我在java代码下面:
Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@101.12.11.11:1521:demo", "demo_app", "demo");
CallableStatement cs = conn.prepareCall("{exec demo.my_pkg.insert_users(?,?,?)}");
cs.registerOutParameter(1, Types.INTEGER);
cs.setInt(1, ?????);
cs.execute();
我需要在这里设置user_id吗?如果是,我应该将它设置为什么,因为它是一个序列? 日期字段&电子邮件领域?
我需要registerOutParameter吗?如果是这样,为什么?
最后,我如何得到插入成功的确认信息?
谢谢!
答案 0 :(得分:0)
如果在存储过程中没有user_id的触发器/计算,那么,是的,您需要从Java代码传递user_id(在Java中获取下一个序列值,并将其传递给存储的函数)。 如果函数返回值,则需要注册参数。 确认取决于实施。例如,如果您的函数返回是否插入了用户,只需检查返回值。
答案 1 :(得分:0)
我需要registerOutParameter吗?如果是这样,为什么?
是的,如果你的存储过程返回任何值(即它是一个函数),你需要registerOutParameter
对于设置日期字段,请将java.sql.Date类用作Type。
答案 2 :(得分:0)
我需要在这里设置user_id吗? RE:您可以在设置之前获取序列值:
从双
我在这里需要registerOutParameter吗?如果是这样,为什么? RE:如果你想获得一个返回值,你可以使用registerOutParameter,如果没有,就忘了它。
如何确认插入成功? RE:您可以从out参数或过程的返回值