1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
|
import org.h2.jdbc.JdbcSQLException;
import org.h2.message.DbException;
import java.sql.Array;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
private boolean BDExistante = false;
private String url;
private String login = "root";
private String password = "";
private boolean BDExistante = false;
private Connection connection;
private Statement stmt;
private String Requete;
private int codeRetour;
private ResultSet rsltSet;
private ResultSetMetaData rsltSetMeta;
// Chargement du driver JDBC pour MySQL
// Là vous verrez vite si vous avez bien fait le boulot d'importation de la librairie
String nomDriver = "org.h2.Driver";
try{
Class.forName(nomDriver);
}catch(ClassNotFoundException cnfe){
JOptionPane.showMessageDialog(null, "Erreur de chargement de driver de base de données", "La classe "+nomDriver+" n'a pas été trouvée", JOptionPane.ERROR_MESSAGE);
dispose ();
}
System.out.println ("Driver H2 Database chargé...");
// Se pose le problème de savoir si la Bd existe déjà ou pas. Car si elle existe // il ne faudra pas lancer la requête de création de table située plus bas,
// sinon ça lève une exception. On essaie donc de se connecter à la base
// avec la particularité IFEXISTS=TRUE qui lève une erreur si la base n'existe
// pas, le booléen BDExistante reste alors à false, si la base existe
// BDExistante devient true
// On vérifie que la base de données existe......
try{
url = "jdbc:h2:./src/BD/BDH2;IFEXISTS=TRUE";
connection = DriverManager.getConnection(url,login,password);
connection.close();
BDExistante = true;
System.out.println ("Base de données H2 détectée...");
} catch(SQLException sqle) {
}
// On se connecte pour de bon cette fois, si la BD n'existait pas cette
// connexion permet de la créer et de s'y connecter directement à la volée.
// Si la BD existe on s'y connecte simplement.
try {
String url = "jdbc:h2:./src/BD/BDH2";
connection = DriverManager.getConnection(url,login,password);
System.out.println ("Connexion à la base de données H2...");
// Il faut créer un Statement à partir de la connection, cela nous permet
// d'effectuer des requêtes
stmt = connection.createStatement();
// Créer le modèle de BD seulement si la BD était
// inexistante auparavant, càd si BDExistante est resté à false
if (!BDExistante){
System.out.println ("implémentation BD");
Requete = "create table PIECE (" +
" idPIECE identity," +
" SUJET varchar(100)," +
" TYPE varchar(100)," +
" RACE varchar(100)," +
" PAYS varchar(100)," +
" TOME varchar(100)," +
" ANNEE varchar(100)," +
" NUMERO varchar(100)," +
" VALEUR varchar(100)," +
" ETAT varchar(2)," +
" PRIX varchar(100)," +
" ANNEE_ACHAT varchar(100)," +
" COTE_NEUF varchar(100)," +
" COTE_BON varchar(100)," +
" COTE_ZERO varchar(100)," +
" ANNEE_COTE varchar(100)," +
" DESC varchar (300)," +
" PHOTO varchar (200)," +
" constraint CLEF_PRIM_idPIECE primary key (idPIECE))";
// Les fonctions du statement permettent d'executer des requêtes
// executeUpdate () pour les créations/modifications de la BD
codeRetour = stmt.executeUpdate (Requete);
System.out.println ("Base de données H2 implémentée...");
}
} catch(SQLException sqle) {
JOptionPane.showMessageDialog(null, "Il y a eu une erreur lors de l'implémentation de la base de données :\n"+Requete, "Erreur base de données", JOptionPane.ERROR_MESSAGE);
dispose ();
}
// Insertion d'un tuple dans la base données
Requete = "insert into PIECE (SUJET," +
" TYPE," +
" RACE," +
" PAYS," +
" TOME," +
" ANNEE," +
" NUMERO," +
" VALEUR," +
" ETAT," +
" PRIX," +
" ANNEE_ACHAT," +
" COTE_NEUF," +
" COTE_BON," +
" COTE_ZERO," +
" ANNEE_COTE," +
" DESC," +
" PHOTO) values (" +
"'"+SujetFld.getText()+"'," +
"'"+TypeFld.getText()+"'," +
"'"+RaceFld.getText()+"'," +
"'"+PaysFld.getText()+"'," +
"'"+TomeFld.getText()+"'," +
"'"+AnneeFld.getText()+"'," +
"'"+NumeroFld.getText()+"'," +
"'"+ValeurFld.getText()+"'," +
"'"+EtatLst.getSelectedItem()+"'," +
"'"+PxFld.getText()+"'," +
"'"+AnneeAchatFld.getText()+"'," +
"'"+CoteNeufFld.getText()+"'," +
"'"+CoteBonFld.getText()+"'," +
"'"+CoteZeroFld.getText()+"'," +
"'"+AnneeCoteFld.getText()+"'," +
"'"+DescriptionArea.getText()+"'," +
"'"+CheminPhotoCopie+"')";
System.out.println(Requete);
try {
codeRetour = stmt.executeUpdate (Requete);
} catch (SQLException sqle) {
JOptionPane.showMessageDialog(null, "La requête suivante a provoqué une erreur :\n" + Requete, "Erreur base de données", JOptionPane.ERROR_MESSAGE);
}
// Lecture de la base de données avec executeQuery()
// cette fonction retourne un ResultSet grâce auquel on pourra exploiter
// les résultats de la requête
// Le ResultSetMeta permet notamment de récupérer les noms de colonne
Requete = "select idPIECE, SUJET, TYPE, RACE, PAYS, NUMERO, DESC, PHOTO from PIECE";
//L'objet ResultSet contient le résultat de la requête SQL
rsltSet = stmt.executeQuery(Requete);
//On récupère les MetaData
rsltSetMeta = rsltSet.getMetaData();
// Petit algo pour afficher les lignes de résultats (pas de moi mais récupéré
// sur ce site, Merci :)
System.out.println("\n**********************************");
//On affiche le nom des colonnes
for(int i = 1; i <= rsltSetMeta.getColumnCount(); i++)
System.out.print("\t" + rsltSetMeta.getColumnName(i).toUpperCase() + "\t *");
System.out.println("\n**********************************");
while(rsltSet.next()){
for(int i = 1; i <= rsltSetMeta.getColumnCount(); i++)
System.out.print("\t" + rsltSet.getObject(i).toString() + "\t |");
System.out.println("\n---------------------------------");
} |
Partager