java jdbc transaction management with example
Ce didacticiel explique les types de transaction JDBC, les types de données, les méthodes de gestion des transactions et comment les utiliser dans le programme Java:
Dans le ResultSet JDBC tutoriel du Série de didacticiels JDBC , nous avons appris à utiliser JDBC ResultSet pour récupérer des données.
Dans ce didacticiel, nous aborderons les types de transaction dans JDBC. Nous avons vu une brève introduction aux types de transaction dans nos tutoriels précédents. Ici, nous allons voir de manière détaillée. Nous couvrirons également quels sont les types de données dans JDBC et comment les utiliser dans le programme Java.
La base de données aura différents types de données et Java aura différents types de données. JDBC gérera cette différenciation. Préparons-nous à connaître le sujet important dans JDBC.
Ce que vous apprendrez:
Gestion des transactions JDBC
La séquence d'actions (instructions SQL) est traitée comme une unité unique appelée transaction. La gestion des transactions est importante pour les applications orientées SGBDR afin de maintenir l'intégrité et la cohérence des données.
Lors de l'exécution de la transaction, nous utiliserons les méthodes getXXX et setXXX pour récupérer et définir les données dans l'objet ResultSet. XXX représente les types de données des colonnes. Nous aborderons les types de transaction et de données de JDBC dans ce didacticiel.
Types de transaction
Dans JDBC, chaque requête SQL sera considérée comme une transaction. Lorsque nous créons une connexion à la base de données dans JDBC, elle s'exécute en mode de validation automatique (la valeur de validation automatique est TRUE). Après l'exécution de l'instruction SQL, elle sera validée automatiquement.
Parfois, nous pouvons vouloir valider la transaction après l'exécution de quelques instructions SQL supplémentaires. À ce moment, nous devons définir la valeur de validation automatique sur False. Pour que les données ne soient pas validées avant d'exécuter toutes les requêtes. Si nous obtenons une exception dans la transaction, nous pouvons annuler les modifications () et faire comme avant. La gestion des transactions peut être bien expliquée - en utilisant les propriétés ACID.
ACIDE signifie
- A – Atomicité -> Si toutes les requêtes sont exécutées avec succès, les données seront validées, sinon pas.
- Cohérence C -> La base de données doit être dans un état cohérent après toute transaction.
- I– Isolement -> La transaction est isolée des autres transactions.
- D – Durabilité -> Si la transaction est validée une fois, elle restera toujours validée.
Il existe trois fonctions les plus importantes dans la gestion des transactions. Elles sont:
est la clé réseau le mot de passe wifi
- S'engager: Après l'exécution des instructions SQL, nous voulons rendre les modifications permanentes dans la base de données. Nous devrions appeler la méthode commit (). Normalement, ce qui est commit signifie qu'il apportera les modifications de manière permanente dans la base de données. Nous ne pouvons pas annuler / révoquer les modifications. Mais nous pouvons modifier les données de la base de données.
- Retour en arriere: La restauration annule les modifications jusqu'au dernier commit ou point de sauvegarde mentionné. Parfois, nous souhaitons annuler les modifications. Par exemple, nous avons une requête imbriquée, une partie a été exécutée avec succès et l'autre a généré une exception. À ce moment-là, nous voulons annuler les modifications apportées par la première partie, nous devrions appeler la méthode Rollback () pour le faire si une exception s'est produite.
- Savepoint: Savepoint aide à créer un point de contrôle dans une transaction et permet d'effectuer une restauration vers ce point de sauvegarde particulier. Tout point de sauvegarde créé pour une transaction sera automatiquement détruit et deviendra invalide une fois la transaction validée ou annulée.
Jusqu'à présent, nous avons vu ce que sont commit, rollback et savepoint et ses opérations. Ci-dessous, nous en verrons les méthodes et comment l'utiliser dans le programme.
Méthodes de gestion des transactions
L'interface de connexion propose 5 méthodes de gestion des transactions. Ils sont les suivants:
# 1) méthode setAutoCommit ()
Par défaut, la valeur de la valeur AutoCommit est TRUE. Après l'exécution de l'instruction SQL, elle sera validée automatiquement. En utilisant la méthode setAutoCommit (), nous pouvons définir la valeur sur AutoCommit.
# 2) Méthode Commit ()
La méthode de validation est utilisée pour valider les données. Après l'exécution de l'instruction SQL, nous pouvons appeler le commit (). Il validera les modifications apportées par l'instruction SQL.
Syntaxe: conn.commit ();
# 3) Méthode Rollback ()
La méthode rollback est utilisée pour annuler les modifications jusqu'à ce que la dernière validation ait eu lieu. Si nous rencontrons un problème ou une exception dans le flux d'exécution des instructions SQL, nous pouvons annuler la transaction.
Syntaxe: conn.rollback ();
# 4) méthode setSavepoint ()
Savepoint vous donne un contrôle supplémentaire sur la transaction. Lorsque vous définissez un point de sauvegarde dans la transaction (un groupe d'instructions SQL), vous pouvez utiliser la méthode rollback () pour annuler toutes les modifications jusqu'au point de sauvegarde ou après le point de sauvegarde (). La méthode setSavepoint () est utilisée pour créer un nouveau point de sauvegarde.
# 5) Méthode releaseSavepoint ()
Il est utilisé pour supprimer le point de sauvegarde créé.
Dans le programme ci-dessous, vous en apprendrez plus sur ces méthodes et apprendrez également comment les utiliser dans le programme Java.
Dans ce didacticiel, tous les programmes sont écrits en Java. Nous avons utilisé la version Java 8 et Oracle DB.
>> Cliquez ici pour télécharger le logiciel Oracle.
>> Cliquez ici pour télécharger la version Java 8.
Il a le processus d'installation Java étape par étape.
Programme d'exemple de transaction
package com.STH.JDBC; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Savepoint; import java.sql.Statement; public class Transaction_Management { public static void main(String() args) throws ClassNotFoundException { // TODO Auto-generated method stub //Select Query to get the Data from employee_details table String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002'; Boolean autoCommit; String update_query = 'update employee_details set salary = 41000 where empNum = 2001'; String update_query1 = 'update employee_details set salary = 42000 where empNum = 2002'; //Update query to set the email id for the employee whose empNUM is 1001 Class.forName('oracle.jdbc.driver.OracleDriver'); try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { Statement statemnt1 = conn.createStatement(); ResultSet rs1 =null; //Checking whether the SELECT query is executed successfully or not rs1 = statemnt1.executeQuery(QUERY); //Executed the SELECT Query System.out.println('Getting the data from employee_details table'); displayData(rs1); //Set the autoCommit value of the connection to FALSE System.out.println('Setting the AutoCommit value as FALSE'); conn.setAutoCommit(false); autoCommit = conn.getAutoCommit(); System.out.println('AutoCommit value of the Connection = '+ autoCommit); //Creating Statement to execute the update query statemnt1 = conn.createStatement(); System.out.println('Executing Update query to update salary of EMPNUM = 2001'); System.out.println('Update Query is ' + update_query); int return_rows = statemnt1.executeUpdate(update_query); System.out.println('Updated the data but didn't commit'); //Getting data after Updation Connection conn1 = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE'); System.out.println('Opening new connection'); System.out.println('EMPNUM = 2001 data'); Statement statement2 = conn1.createStatement(); ResultSet rs; rs = statement2.executeQuery(QUERY); displayData(rs); System.out.println('Commit has been done'); conn.commit(); Savepoint s1 = conn.setSavepoint(); System.out.println('SavePoint has been created'); System.out.println('Displaying data of EMPNUM = 2001'); System.out.println('Using The Second Connection'); rs = statement2.executeQuery(QUERY); displayData(rs); rs = statemnt1.executeQuery(QUERY); //Rollback the transaction System.out.println('Data of EMPNUM = 2002'); rs1 = statemnt1.executeQuery(QUERY1); displayData(rs1); System.out.println('Updating the salary of EMPNUM = 2002'); System.out.println('Update Query is ' + update_query1); statemnt1.executeUpdate(update_query1); System.out.println('Data of EMPNUM = 2002 but didn't commit'); rs1 = statemnt1.executeQuery(QUERY1); displayData(rs1); System.out.println('Rollback is done... so updated data won't be reflected'); conn.rollback(s1); System.out.println('Data of EMPNUM = 2002 after Rollback till the last savepoint'); rs1 = statemnt1.executeQuery(QUERY1); displayData(rs1); } catch (SQLException e) { e.printStackTrace(); } } public static void displayData(ResultSet rs1) throws SQLException { while(rs1.next()) { int empNum = rs1.getInt('empNum'); String lastName = rs1.getString('lastName'); String firstName = rs1.getString('firstName'); String email = rs1.getString('email'); String deptNum = rs1.getString('deptNum'); String salary = rs1.getString('salary'); System.out.println(empNum + ',' +lastName+ ',' +firstName+ ',' +email +','+deptNum +',' +salary); } } }
Production:
Explication:
Ce que nous avons fait dans le programme de gestion des transactions ci-dessus est de mettre à jour les valeurs de l'employé donné dans la table EMPLOYEE_DETAILS et de valider les données. Si une erreur ou une exception s'est produite, nous avons effectué l'opération rollback (). Nous allons maintenant voir l'explication complète du programme.
#1) Création d'une requête 2 Select pour 2 employés en fonction de leur EMPID
Voici les 2 requêtes de sélection.
String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002';
#deux) Création de deux requêtes de mise à jour pour 2 employés en fonction de leur EMPID
Deux requêtes mises à jour:
String update_query = 'update employee_details set salary = 41000 where empNum = 2001'; String update_query1 = 'update employee_details set salary = 42000 where empNum = 2002';
# 3) Ouvrez Connection, exécutez la requête de sélection et affichez les données de EMPNUM = 2001.
# 4) À l'aide de la méthode setAutoCommit (), définissez la valeur de autoCommit sur false.
# 5) Exécution de la requête de mise à jour de EMPNUM = 2001 et création d'une autre connexion pour la même base de données et sélection de la valeur de EMPNUM = 2001.
# 6) Les données résultantes de l'employé dont EMPNUM = 2001 ne sont pas les données mises à jour. Parce que nous n'avons pas effectué l'opération commit (). Si vous avez utilisé la même connexion que celle où vous l'avez utilisée pour la mise à jour, elle vous aurait montré les données mises à jour. Maintenant validé les données. Les données ont été reflétées dans le tableau.
# 7) Création d'un point de sauvegarde après l'opération de validation.
# 8) Utilisation de la requête de sélection pour afficher les données de EMPNUM = 2002. Modification du salaire de cet employé à l'aide d'une requête de mise à jour. Après cela, affiché les données de EMPNUM = 2002, en utilisant la même connexion. Il devrait afficher les données mises à jour.
# 9) Effectuez la restauration jusqu'au dernier point de sauvegarde en utilisant la méthode de restauration. Maintenant, lorsque nous avons affiché les données de cet employé en utilisant la même connexion, il a les anciennes données parce que la restauration annule les modifications jusqu'au dernier point de sauvegarde si nous mentionnons savepoint else au dernier commit.
# dix) Nous avons créé une méthode qui affichera les données car nous affichons des données plusieurs fois ici.
Types de données JDBC
Les bases de données ont des types de données SQL et Java a des types de données Java. Il devrait y avoir un mécanisme pour lire et écrire des données entre une application Java et une base de données. Différentes bases de données prennent en charge les types SQL, mais avec quelques variantes de nom.
Par exemple, la plupart des bases de données prennent en charge de grandes valeurs binaires, Oracle l'appelle LONG RAW, Sybase l'appelle IMAGE, Informix l'appelle BYTE et DB2 l'appelle LONG VARCHAR FOR BIT DATA.
Lors de l'écriture du programme JDBC, nous n'avons pas à nous soucier des types de données SQL utilisés par la base de données cible. JDBC a un ensemble d'identificateurs de type SQL génériques dans la classe java.sql.Types. Ces types sont conçus pour prendre en charge la plupart des types de données SQL génériques. Lors de l'écriture d'un programme JDBC, nous n'utiliserons que les types de données JDBC.
Le pilote JDBC convertira les types de données Java en types de données de base de données dans les deux sens. Vous pouvez utiliser la méthode java.sql.DatabaseMetaData.getTypeInfo pour vérifier quels types SQL sont réellement pris en charge par une base de données donnée, puis écrire un programme. JDBC utilise un mappage par défaut pour la plupart des types de données.
Par exemple, la chaîne Java sera convertie en un type SQL VARCHAR.
Nous verrons comment le mappage est effectué dans les méthodes setXXX, getXXX et updateXXX des interfaces prepareStatement ou CallableStatement ou ResultSet dans le tableau suivant:
TYPE SQL | TYPE JAVA / JDBC | setXXX | getXXX | updateXXX |
---|---|---|---|---|
ENTIER | int | setInt | teinté | updateInt |
CARBONISER | java.lang.String | setString | getString | updateString |
VARCHAR | java.lang.String | setString | getString | updateString |
LONGVARCHAR | java.lang.String | setString | getString | updateString |
BIT | booléen | setBoolean | getBoolean | updateBoolean |
NUMÉRIQUE | java.math.BigDecimal | setBigDecimal | getBigDecimal | UpdateBigDecimal |
PETITE MENTHE | court | setShort | getShort | updateShort |
GRAND | longue | setLong | getLong | updateLong |
RÉEL | flotter | setFloat | getFloat | updateFloat |
FLOTTER | flotter | setFloat | getFloat | updateFloat |
DOUBLE | double | setDouble | getDouble | mise à jourDouble |
BINAIRE | octet() | setBytes | getBytes | updateBytes |
DATE | java.sql.Date | régler la date | avoir un rendez-vous | date de mise à jour |
TEMPS | java.sql.Time | régler le temps | obtenir du temps | temps de mise à jour |
HORAIRE | java.sql.Timestamp | setTimestamp | getTimestamp | updateTimeStamp |
CLOB | java.sql.Clob | setClob | getClob | updateClob |
GOUTTE | java.sql.Blob | setBlob | getBlob | updateBlob |
DÉPLOYER | Déployer | setArray | getArray | updateArray |
XML | Xml | setSQLXML | getSQLXML | updateSQLXML |
Type structuré | Objet | setObject | getObject | updateObject |
Nous avons défini les méthodes setXXX, getXXX et updateXXX pour les types de données de base dans nos tutoriels précédents. Vous pouvez vous y référer.
Ici, nous avons expliqué les types de clob et de blob dans l'exemple suivant.
Exemple de programme BLOB
package com.STH.JDBC; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Blob_Example { @SuppressWarnings('resource') public static void main(String() args) throws ClassNotFoundException, IOException { // TODO Auto-generated method stub String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)'; //Select Query to get the Data from employee_details table //Update query to set the email id for the employee whose empNUM is 1001 Class.forName('oracle.jdbc.driver.OracleDriver'); System.out.println('Establishing Connection'); try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { Statement statemnt1 = conn.createStatement(); //Executing the Create Query statemnt1.execute(QUERY); System.out.println('Table has been created for BLOB type'); System.out.println('Inserting data into Blob_Sample_Example table'); String insert_query = ' insert into Blob_Sample_Example values(?,?)'; //Passing the values for preparedStatement PreparedStatement pstmnt = conn.prepareStatement(insert_query); pstmnt.setString(1, 'Sotware Testing Help'); //Mention Image path to store the image in DB FileInputStream inputStream = new FileInputStream('D:\Bhakiya\Bhakiya\JDBC\Software Testing Pic.png'); pstmnt.setBlob(2, inputStream); //Executing the preparedStatement to insert the data pstmnt.execute(); System.out.println('Retrieving data'); ResultSet rs = statemnt1.executeQuery('select * from Blob_Sample_Example'); while(rs.next()) { //Getting Picture Name System.out.println('Picture Name:' + rs.getString(1)); Blob blob1 = rs.getBlob(2); //using blob retrieving the Image byte byteArray() = blob1.getBytes(1,(int)blob1.length()); FileOutputStream outPutStream = new FileOutputStream('D:\Bhakiya\Bhakiya\JDBC\Software Testing Pic output.png'); outPutStream.write(byteArray); System.out.println(' Go to the following path: D:\Bhakiya\Bhakiya\JDBC\Software Testing Pic output.png'); } } catch (SQLException e) { e.printStackTrace(); } } }
Production:
Le fichier a été enregistré avec succès dans le chemin indiqué.
Explication:
Dans le programme ci-dessus, nous avons d'abord créé / enregistré une image dans le dossier 'D: \ Bhakiya \ Bhakiya \ JDBC' . Cet emplacement est juste pour exemple. Vous pouvez créer votre propre chemin de fichier dans votre système. Le nom du fichier est une image de test du logiciel. Ensuite, nous avons créé un programme Java pour stocker cette image dans la table DB, récupérer l'image de la table et la stocker dans le système local.
Jusqu'à présent, nous avons discuté de la vue d'ensemble de la tâche. Nous allons maintenant voir comment nous y sommes parvenus dans le programme.
#1) Créez une table dans DB pour stocker l'image.
Syntaxe:
String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)';
Dans la requête ci-dessus, nous avons 2 colonnes.
- PicName - varchar2 -> Il est utilisé pour stocker le nom de l'image
- picture - BLOB -> Il est utilisé pour stocker l'image dans le tableau.
Le type de données BLOB est utilisé pour stocker l'image / l'image dans la table DB.
#deux) La connexion et l'instruction ont été créées et appelées méthode d'exécution pour exécuter la requête CREATE.
statemnt1.execute(QUERY);
# 3) Ensuite, nous avons créé la requête d'insertion et l'avons exécutée à l'aide de PreparedStatement.
Syntaxe PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Utilisation de setString () - définissez le nom de l'image.
# 5) Pour définir l'image, utilisez la classe FileInputStream pour transmettre l'emplacement de l'image.
Syntaxe:
FileInputStream inputStream = new FileInputStream('Picture Full Path');
Ensuite, en utilisant la méthode setBlob (), nous pouvons définir l'image dans l'objet PreparedStatement. Après cela, a appelé la méthode d'exécution de PreparedStatement. Cela insérera les données données dans le tableau.
Après avoir exécuté la requête d'insertion, en utilisant l'objet ResultSet, nous récupérons les données de Table (en utilisant Select Query).
# 6) En utilisant la méthode getString, nous pouvons obtenir la valeur de la colonne PicName.
# 7) Pour obtenir l'image, suivez les étapes ci-dessous:
- Créez un objet Blob et affectez les valeurs de retour de la méthode getBlob de l'objet ResultSet.
- La syntaxe pour cela est: Blob blob1 = rs.getBlob ();
- Créez un objet tableau d'octets et obtenez la valeur de l'objet Blob sous forme d'octets.
- Créez l'objet objet FileOutputStream et transmettez le chemin complet pour stocker l'image dans ce chemin. Appelez la méthode write () de l'objet FileOutputStream - qui stockera l'image.
- Après cela, le programme a été exécuté avec succès.
# 8) Accédez à l'emplacement de l'image de sortie et vérifiez si l'entrée et la sortie sont identiques.
Exemple de programme CLOB
package com.STH.JDBC; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.sql.Blob; import java.sql.Clob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Clob_Example { public static void main(String() args) throws ClassNotFoundException, IOException { // TODO Auto-generated method stub String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)'; //Create Query to create new table for CLOB example Class.forName('oracle.jdbc.driver.OracleDriver'); //Creating Connection System.out.println('Establishing Connection'); try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { Statement statemnt1 = conn.createStatement(); //Executing create query statemnt1.execute(QUERY); System.out.println('Table has been created for CLOB type'); System.out.println('Inserting data into Clob_Sample_Example table'); //Insert Query String insert_query = ' insert into Clob_Sample_Example values(?,?)'; //Passing Parameters for PreparedStatement PreparedStatement pstmnt = conn.prepareStatement(insert_query); pstmnt.setString(1, 'File1'); FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt'); pstmnt.setClob(2, fileRead); //Executing the PreparedStatement pstmnt.execute(); System.out.println('Retrieving data'); ResultSet rs = statemnt1.executeQuery('select * from Clob_Sample_Example'); while(rs.next()) { System.out.println('File Name:' + rs.getString(1)); //Getting file data Clob clob1 = rs.getClob(2); Reader r = clob1.getCharacterStream(); //Using Reader - read the data and Writer - Write the data in file in the given location FileWriter fileWrite = new FileWriter('D:\Bhakiya\Bhakiya\JDBC\file1 output.txt'); int i; while((i=r.read())!=-1) fileWrite.write(i); fileWrite.close(); System.out.println(' Go to the following path: D:\Bhakiya\Bhakiya\JDBC\file1 output.txt'); } } catch (SQLException e) { e.printStackTrace(); } } }
Production:
Fichier d'entrée:
Le fichier a été enregistré avec succès dans le chemin indiqué.
Fichier de sortie:
Explication:
Dans le programme ci-dessus, nous avons d'abord créé / enregistré un fichier texte «file1.txt» dans le dossier «D: \ Bhakiya \ Bhakiya \ JDBC». Cet emplacement est juste pour exemple. Vous pouvez créer votre propre chemin de fichier dans votre système. Ensuite, nous avons créé un programme Java pour stocker ce fichier dans la table DB et récupérer ce fichier de la table et le stocker dans le système local.
Jusqu'à présent, nous avons discuté de la vue d'ensemble de la tâche. Nous allons maintenant voir comment nous y sommes parvenus dans le programme.
#1) Créez une table dans DB pour stocker l'image.
Vous trouverez ci-dessous la syntaxe de la requête CREATE TABLE:
String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)';
Dans la requête ci-dessus, nous avons 2 colonnes.
- FileName - varchar2 -> Il est utilisé pour stocker le nom de l'image.
- StoreFile - CLOB -> Il est utilisé pour stocker le fichier dans la table.
Le type de données CLOB est utilisé pour stocker le type de caractère des données binaires dans la table DB
#deux) La connexion et l'instruction ont été créées et appelées méthode d'exécution pour exécuter la requête CREATE.
statemnt1.execute(QUERY);
# 3) Ensuite, nous avons créé la requête d'insertion et l'avons exécutée à l'aide de PreparedStatement.
Syntaxe PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Utilisation de setString () - définissez le nom du FileName.
# 5) Pour définir / stocker le fichier, utilisez la classe FileReader pour transmettre le fichier avec l'emplacement de remplissage.
Syntaxe:
FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt');
Ensuite, en utilisant la méthode setClob (), nous pouvons définir le fichier dans l'objet PreparedStatement. Après cela, appelez la méthode d'exécution de PreparedStatement. Cela insérera les données données dans le tableau.
Après avoir exécuté la requête d'insertion, à l'aide de l'objet ResultSet, nous récupérons les données de Table (à l'aide de la requête de sélection).
Sélectionnez la requête:
'select * from Clob_Sample_Example'
# 6) En utilisant la méthode getString, nous pouvons obtenir la valeur de la colonne FileName.
# 7) Pour obtenir le fichier, nous avons suivi les étapes ci-dessous:
- Créez un objet Clob et affectez les valeurs de retour de la méthode getClob de l'objet ResultSet.
- La syntaxe pour cela est: Clob clob1 = rs.getClob ();
- Créez un objet Reader et obtenez la valeur de l'objet Clob en tant que Character.
- Créez l'objet objet FileWriter et transmettez le chemin d'accès complet pour stocker le fichier dans ce chemin. Appelez la méthode write () de l'objet FileWrite - qui écrira les données dans le fichier à l'emplacement.
- Après cela, le programme a été exécuté avec succès.
# 8) Accédez à l'emplacement du fichier de sortie et vérifiez si les fichiers d'entrée et de sortie sont identiques.
Points à retenir:
- ACID Properties explique la gestion des transactions dans la base de données.
- Commit (), rollback () et savepoint sont les opérations les plus importantes de la gestion des transactions.
- Commit effectuera les modifications de manière permanente dans DB, Rollback annulera les modifications jusqu'au dernier commit ou au point de sauvegarde mentionné et Savepoint aidera à créer un point de contrôle.
- La base de données gère les types de données SQL et Java gère les types de données Java. Le pilote JDBC est utilisé pour gérer cette conversion.
- Le pilote JDBC lui-même a des identifiants de type SQL, de sorte que le programmeur n'a pas à se soucier des types de données.
Questions fréquemment posées
Q # 1) Quel est le type de données JDBC?
Répondre: Java a ses types de données et la base de données a ses types de données. Le pilote JDBC convertit le type de données Java en type de données SQL approprié qui sera accepté par la base de données. Les objets ResultSet fournissent également les méthodes setXXX () et getXXX () disponibles pour les types de données appropriés.
Q # 2) Quel est le type de données pour la date en Java?
Répondre: La date en Java n'est pas seulement un type de données mais une classe. Une date en Java a la date, l'heure, l'année, le nom du jour, le jour de la semaine et le fuseau horaire. La classe Date a les méthodes appropriées pour récupérer les données pertinentes.
Q # 3) Quelle est la différence entre java.util.Date et java.sql.Date?
Répondre: La principale différence est que java.util.Date contient également des informations sur la date et l'heure. Mais java.sql.Date ne contient que des informations sur la date. C'est la principale différence que nous ne pouvons pas mapper java.util.Date directement avec java.sql.Date.
Q # 4) Avons-nous une classe en Java pour représenter le type TIME et TIMESTAMP pour SQL?
Répondre: Oui, nous avons une classe pour le type TIME et TIMESTAMP pour SQL. La classe java.sql.Time représente les informations relatives à TIME. La classe java.sql.timestamp représente les informations relatives à TIMESTAMP.
Q # 5) Comment démarrer une transaction dans JDBC?
Répondre: La connexion JDBC démarre avec le mode de validation automatique activé, où chaque instruction SQL est considérée comme une transaction. Il n'y a pas de processus spécifique pour démarrer une transaction dans JDBC. Lorsque vous créez une connexion et commencez à exécuter l'instruction SQL, c'est là que la transaction a commencé.
Q # 6) Quelle est la méthode commit () en Java?
Répondre: La méthode Commit () en Java est utilisée pour enregistrer les modifications effectuées depuis le dernier commit (). La méthode Commit () est disponible dans l'interface de connexion. En utilisant un objet de connexion, nous pouvons appeler le commit ().
Q # 7) Quelle est la méthode de restauration en Java?
Répondre: Après le dernier commit (), si des problèmes se sont produits, nous pouvons appeler la méthode rollback () pour annuler toutes les modifications effectuées jusqu'à ce que la dernière méthode commit.rollback () soit disponible dans l'interface de connexion. En utilisant un objet de connexion, nous pouvons appeler la méthode rollback ().
Conclusion
Ici, nous avons couvert les types de données en Java et DB et comment le pilote JDBC les gère. Nous avons discuté des propriétés ACID. C'est le plus important pour le domaine bancaire. Ce sera très utile pour votre carrière. Dans la section Gestion des transactions, nous avons discuté des méthodes de validation et de restauration telles que commit (), rollback (), setAutoCommit (), setSavepoint () et releaseSavepoint ().
lecture recommandée
- Tutoriel Java JDBC: Qu'est-ce que JDBC (Java Database Connectivity)
- Tutoriel de connexion Java JDBC avec exemple de programmation
- JDBC DriverManager, JDBC PreparedStatement et Statement
- JDBC ResultSet: Comment utiliser Java ResultSet pour récupérer des données
- Types de données Java, boucles, tableaux, commutateurs et assertions
- Méthode Java String length () avec exemples
- Comment utiliser la méthode Java toString?
- Test de base de données Selenium (à l'aide de WebDriver et de l'API JDBC)