我必须从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而不是我数据库中的商店对象。
答案 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调用)。