首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java如何在两个表中添加数据(关系数据库)

Java如何在两个表中添加数据(关系数据库)
EN

Stack Overflow用户
提问于 2013-12-20 12:41:41
回答 3查看 1.7K关注 0票数 0

我正在制作一个桌面应用程序。问题是:

我有两张桌子- suppliersitems

代码语言:javascript
复制
supplier  supplierid(PK,AI),name,address,telephone
item     itemid(PK,AI),supplier_supplierID(FK),name

问题:

  • 如何同时插入supplieritem表?items中的外键是自己添加的还是我必须显式地添加?
  • 如何仅为特定供应商添加项目?我正在考虑一些列表,下拉菜单选择供应商->得到他的PK和插入到项目表。

我在用Netbeans,MySQL

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2013-12-20 12:46:50

这取决于您试图访问数据库的方式。使用诸如Hibernate之类的ORM将为您完成大部分工作,因为它处理实体之间的依赖关系。

如果您使用普通JDBC访问您的DB,那么您应该按照正确的顺序手动插入“行”。因此,您应该先插入供应商,然后再插入依赖项。如果供应商已经存在,您应该首先获得它的id,并在保存项目时将该值作为supplier_supplierID传递。

但这一切都与春天无关!

票数 1
EN

Stack Overflow用户

发布于 2013-12-20 12:48:25

您必须先添加父行(供应商),然后添加项目。否则,您将得到一个错误。

当您添加供应商时,您将使用新的supplier_id作为项目的值。

票数 0
EN

Stack Overflow用户

发布于 2017-11-27 10:16:56

这段代码并不是最好的,但它可以工作,首先在主表中插入一些数据,然后得到主id,然后用代码中外键位置的7替换它。所以一旦它起作用了,那么找到一种方法来处理我没有处理的外键。

代码语言:javascript
复制
     try {   


          String url ="jdbc:mysql://localhost/dbtec";          

    Class.forName("com.mysql.jdbc.Driver");
     conn = DriverManager.getConnection(url,userdb,pass);

         PreparedStatement statement = (PreparedStatement) conn.prepareStatement(" INSERT INTO supplier(name,address,telephone
) VALUES(?,?,?)");
         statement.setString(1,"stackoverflow");
         statement.setString(2,”15 newyork”);
         statement.setString(3,"+19898989");
         statement.executeUpdate();
                  statement.close();

         /// Insert into another table 

         PreparedStatement statement2= (PreparedStatement) conn.prepareStatement("INSERT INTO item(supplierID,name) VALUES (?,?) ");
         statement2.setString(1,"7");
         statement2.setString(2,"Bruce");
         statement2.executeUpdate();
                  statement2.close();   
                  conn.close();
     }
     catch(SQLException e){
         e.printStackTrace();

     }  catch (ClassNotFoundException ex) {
            Logger.getLogger(newclient.class.getName()).log(Level.SEVERE, null, ex);
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20703875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档