将对象从java插入数据库
我必须从java向我的数据库(SQL Developer)中插入一些内容。 在我的数据库中找到的信息如下所示:将对象从java插入数据库,java,oracle-sqldeveloper,Java,Oracle Sqldeveloper,我必须从java向我的数据库(SQL Developer)中插入一些内容。 在我的数据库中找到的信息如下所示: create or replace type shop as object (name varchar2(30),price number(10)); public class ShopManager { public void create(Integer ID,String prod) throws SQLException { Connectio
create or replace type shop as object (name varchar2(30),price number(10));
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();
}
}
和一张桌子:
create table product (id number, obj shop);
现在,当尝试从java代码插入数据库时,我遇到了一个错误,如ORA-00932:不一致的数据类型
我想这是因为我插入了数据。
我创建了一个要插入的函数,它有一个id和一个字符串。
我认为问题在于这个字符串,因为我需要在“PRODUCT”表中插入一些“SHOP”值。
但我不知道如何从java代码中插入“SHOP”值。
我的java代码如下所示:
create or replace type shop as object (name varchar2(30),price number(10));
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插入字符串,而不是插入数据库中的shop对象。您可以在insert语句中使用
shop
对象构造函数,但您需要产品ID和shop price作为数字,而不是组合字符串:
insert into product (id, obj) values (?, shop(?, ?))
。。。因此字符串成为您需要设置的第二个参数,您需要确定其他两个参数值的来源。看起来您应该将函数规格更改为:
public void create(Integer prodID, String name, Integer shopID)
然后称之为:
man.create(1, "Name1", 10);
尽管这假设“price”始终是am integer,但这可能不太可能,因此第三个函数参数应该是float类型(也有适当的set调用)。您处理的是关系数据库,为什么要处理对象?创建一个名为
SHOP
的表,该表有两列:name
和price
并在每次插入时向表中添加一行。我在表中唯一的ID就是产品ID。