2014-04-22 4 views
-1

J'ai un tableau Ordre qui a des champs Ordonnancement | statut | cid |Insérer les données dans plusieurs tables en une seule transaction dans jdbc

et une autre table Order_Details

Oder_details_id | Order_id | id article

Je veux insérer des valeurs dans les deux la table seule transaction comme si un lieu de client un ordre si l'un L'identifiant de la commande doit être généré et l'identifiant de la commande doit être inséré dans la table Order and Order_Details. Mais comment puis-je faire dans JDBC ??

+0

Qu'avez-vous essayé jusqu'à présent? Pouvez-vous poster du code et montrer ce qui ne fonctionne pas comme prévu? –

+0

Je suis passé par un code qui dit d'utiliser la transaction ou la procédure stockée. Comme d'abord (id d'ordre inerte dans la table de commande) puis (sélectionnez orderi_d de la table de commande où date = "" et itemid = "") et insérez order_id dans les tables order_details – TechGuy

Répondre

2

Vous pouvez le faire à la mise en autocommit false:

dbConnection.setAutoCommit(false); // to start a transaction block. 

// do your two inserts here 

dbConnection.commit(); // to end a transaction block. 

Jetez un coup d'oeil ici par exemple complet: JDBC Transaction example

+0

Sera-t-il capable de sélectionner le Order_Id qui est une clé primaire & Auto Increment dans un Order_Table ET insérez cet Order_Id dans la table Orderdetails. Dans la table OrderDetails, il s'agit de la clé Forign @Ashot Karakhanyan – TechGuy

+0

@ user2210442, Vous pouvez d'abord insérer 'Order' puis' OrderDetails'. Lorsque vous insérez le 'Order' vous pouvez récupérer' id' (PK) généré comme suit: 'PreparedStatement ps = conn.prepareStatement (sql, PreparedStatement.RETURN_GENERATED_KEYS') et l'obtenir après l'insertion comme suit: ' int generatedId; (ResultSet rs = ps.getGeneratedKeys()) { if (rs.next()) { generatedId = rs.getInt (1);} } ' Ensuite, vous pouvez utiliser cet identifiant comme FK lors de l'insertion' OrderDatails –

+0

Karakhanayan Merci monsieur, mais une chose de plus Donc, il va retourner le dernier ** généré Order_Id (clé primaire) ** ou va-t-il retourner le tout précédent ** Order_Id (clé primaire) ** – TechGuy

Questions connexes