使用Java通过存储过程插入Oracle JDBC

时间:2011-12-21 07:19:39

标签: java oracle

我尝试使用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吗?如果是这样,为什么?

最后,我如何得到插入成功的确认信息?

谢谢!

3 个答案:

答案 0 :(得分:0)

如果在存储过程中没有user_id的触发器/计算,那么,是的,您需要从Java代码传递user_id(在Java中获取下一个序列值,并将其传递给存储的函数)。 如果函数返回值,则需要注册参数。 确认取决于实施。例如,如果您的函数返回是否插入了用户,只需检查返回值。

答案 1 :(得分:0)

我需要registerOutParameter吗?如果是这样,为什么?

是的,如果你的存储过程返回任何值(即它是一个函数),你需要registerOutParameter

对于设置日期字段,请将java.sql.Date类用作Type。

答案 2 :(得分:0)

  1. 我需要在这里设置user_id吗? RE:您可以在设置之前获取序列值:

    从双

  2. 中选择sequence_name.nextval
  3. 我在这里需要registerOutParameter吗?如果是这样,为什么? RE:如果你想获得一个返回值,你可以使用registerOutParameter,如果没有,就忘了它。

  4. 如何确认插入成功? RE:您可以从out参数或过程的返回值

  5. 获得结果