Deux tables sont présentes dans la base de données, une table étudiante avec colonnes roll_no (pk), nom, grade et dob, une autre table StudentLet avec colonnes roll_no, nom, grade et sortant_date.
Je veux supprimer l'enregistrement de l'étudiant de la table étudiante dont le rouleau NO est entré par l'utilisateur et ajoutez le numéro de rouleau n °, nom, grade et quitte_date (la date à laquelle l'enregistrement est supprimé et ajouté à la table) à la table StudentLeft. P>
Ceci est ma méthode. P> Ce sont les erreurs. P> J'utilise la base de données Oracle 11G Express. < / p> p>
3 Réponses :
Si votre requête ne doit pas être au lieu de p>
Pourriez-vous le modifier pour être plus lisible? Insérez vos SQL entre crochets de code
Bien que cela soit reproché à nouveau, cela peut éventuellement la solution que l'OP est la recherche, alors je ne sais pas pourquoi quelqu'un voudrait voter
Exécuter échouera si la requête est fausse. Je pense que c'est la solution.
J'ai fait voté par erreur parce que je l'ai lu l'inverse. Désolé pour ça, j'ai déjà changé mon vote
Votre code de suppression utilisé la mauvaise déclaration préparée, manquant un exécuté.
Il est conseillé d'utiliser des ressources traitantes comme ci-dessous, pour la fermeture automatique,
même sur le retour ou l'exception. (Il s'occupe également des étendues variables.) P> puis il faut sélectionner + insérer dans la base de données, à l'aide d'une instruction (insérer SELECT). P> Le SQL de l'étudiantlog est un peu incompréhensible pour moi, mais un bel insert serait: p> supprimer le besoin Java Niblage d'accès à la base de données. P> P> P> P> P> >
vous avez manqué l'erreur dans la suppression, elle devrait être supprimée, au lieu de supprimer simplement
@Sultuske j'ai ajouté un de, le Docs raconter De est facultatif. Avec de cela est moins terrifiant.
Le code que vous avez écrit peut être simplifié un peu:
public static void main(String[] args) { try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); return; } int rollNo = Integer.parseInt(args[0]); try (Connection connection = dataSource.getConnection()) { connection.setAutoCommit(false); String transferStatement = "INSERT INTO StudentLog (roll_no, name, standard, leaving_date) " + "SELECT roll_no, name, standard, SYSDATE FROM Student WHERE roll_no = ?"; try (PreparedStatement stmt = connection.prepareStatement(transferStatement)) { stmt.setInt(1, rollNo); stmt.executeUpdate(); } String deleteStatement = "DELETE FROM Student WHERE roll_no = ?"; try (PreparedStatement stmt = connection.prepareStatement(deleteStatement)) { stmt.setInt(1, rollNo); stmt.executeUpdate(); } connection.commit(); } catch (SQLException e) { e.printStackTrace(); } }
Ok ... et qu'est-ce qui fonctionne (ce n'est pas) dans votre code? Pouvez-vous être précis sur ce que votre problème est?
Ne peut pas comprendre correctement quelle est l'erreur. Montrant deux erreurs un dans le lot d'exécution et une autre dans la région où je ferme la déclaration préparée.
Modifiez votre question et écrivez-y ces erreurs
Et vous vous attendez à ce que nous sachions quelle est l'erreur, pendant que vous ne nous indiquez aucune information sur ce qui pourrait mal tourner, sans parler d'un message d'erreur? Vous imprimez vos stackTraces (personnellement, je les mettrais dans des fichiers journaux), vous devez donc savoir exactement ce qui ne va pas