我正在制作一个桌面应用程序。问题是:
我有两张桌子- suppliers和items。
supplier supplierid(PK,AI),name,address,telephone
item itemid(PK,AI),supplier_supplierID(FK),name问题:
supplier和item表?items中的外键是自己添加的还是我必须显式地添加?我在用Netbeans,MySQL
谢谢!
发布于 2013-12-20 12:46:50
这取决于您试图访问数据库的方式。使用诸如Hibernate之类的ORM将为您完成大部分工作,因为它处理实体之间的依赖关系。
如果您使用普通JDBC访问您的DB,那么您应该按照正确的顺序手动插入“行”。因此,您应该先插入供应商,然后再插入依赖项。如果供应商已经存在,您应该首先获得它的id,并在保存项目时将该值作为supplier_supplierID传递。
但这一切都与春天无关!
发布于 2013-12-20 12:48:25
您必须先添加父行(供应商),然后添加项目。否则,您将得到一个错误。
当您添加供应商时,您将使用新的supplier_id作为项目的值。
发布于 2017-11-27 10:16:56
这段代码并不是最好的,但它可以工作,首先在主表中插入一些数据,然后得到主id,然后用代码中外键位置的7替换它。所以一旦它起作用了,那么找到一种方法来处理我没有处理的外键。
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);
}https://stackoverflow.com/questions/20703875
复制相似问题