从java插入对象到数据库

时间:2017-05-01 21:58:31

标签: java oracle-sqldeveloper

我必须从java中插入我的数据库(SQL Developer)。 我的数据库中的信息如下所示:

create or replace type shop as object (name varchar2(30),price number(10));

和一张表:

create table product (id number, obj shop);

现在,当我尝试从我的java代码插入我的数据库时,我遇到了类似ORA-00932的错误:数据类型不一致。

我认为这是因为我插入的数据。 我创建了一个要插入的函数,它有一个id和一个字符串。 我认为问题在于字符串,因为我需要在“PRODUCT”表中插入一些“SHOP”值。 但我不知道如何从我的java代码中插入“SHOP”值。 我的java代码如下:

   public class ShopManager {
     public void create(Integer ID,String prod) throws SQLException {
        Connection con = Database.getConnection();
        try (PreparedStatement pstmt = con.prepareStatement("insert into product (id,obj) values (?,?)")) {
            pstmt.setInt(1,ID);
            pstmt.setString(2, product);
            pstmt.executeUpdate();
        }
}

这就是我尝试插入的方式:

ShopManager man = new ShopManager();
string manager = "shop(\'Name1\',10)";
man.create(1,manager);
//and here i commit 

所以,事实是,我不知道如何不从java插入STRING而不是我数据库中的商店对象。

1 个答案:

答案 0 :(得分:1)

您可以使用shop对象构造函数作为insert语句的一部分,但您需要产品ID和商店价格作为数字,而不是组合字符串:

insert into product (id, obj) values (?, shop(?, ?))

...所以String成为你需要设置的第二个参数,你需要决定其他两个参数值的来源。看起来您应该将功能规格更改为:

public void create(Integer prodID, String name, Integer shopID)

然后将其命名为:

man.create(1, "Name1", 10);

虽然假设价格为'将永远是整数,这可能不太可能,所以第三个函数参数应该是一个浮点类型(也有适当的set调用)。