使用Java通过存储过程插入Oracle JDBC
我正在尝试使用Java在Oracle11g中插入一条记录。我还在学Java 我必须调用存储过程来插入记录。我在users表中的主键是user\u id。我还有一个user\u id递增2的序列 现在,在Java中设置输入参数时,我需要传递什么用户id?此外,如果日期参数为:使用Java通过存储过程插入Oracle JDBC,java,oracle,Java,Oracle,我正在尝试使用Java在Oracle11g中插入一条记录。我还在学Java 我必须调用存储过程来插入记录。我在users表中的主键是user\u id。我还有一个user\u id递增2的序列 现在,在Java中设置输入参数时,我需要传递什么用户id?此外,如果日期参数为: Users:user_id number (primary key), email varchar, created_date Date 我有以下java代码: Class.forName("oracle.
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();
我需要在这里设置用户id吗?如果是,我应该将其设置为什么,因为它是一个序列?
日期字段和电子邮件字段呢
我需要这里的registerOutParameter吗?若然,原因为何 最后,我如何确认插入成功
谢谢 如果存储过程中没有用户id的触发器/计算,那么,是的,您需要从Java代码中传递用户id(获取Java中的下一个序列值,并将其传递给存储函数)。 如果函数返回值,则需要注册出参数。
确认取决于执行情况。例如,如果您的函数返回值是否由用户插入,只需检查返回值。此处是否需要registerOutParameter?若然,原因为何 是的,如果存储过程返回任何值(即它是一个函数),则需要registerOutParameter 要设置日期字段,请使用java.sql.date类作为类型
如果我有序列的触发器呢?我需要在参数中传递什么?在这种情况下,用户id是在您的数据库中生成的,您不应该从java传递它。若你们有一个触发器,为什么在存储过程中有用户id参数?我可以直接将序列作为CallableStatement cs=conn.prepareCall(“{exec demo.my_pkg.insert_users(seq_users.nextval,,?)}”)传递吗;