IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

ouverture + rafraichissement + création base de données


Sujet :

JDBC Java

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut ouverture + rafraichissement + création base de données
    Bonjour tout le monde,

    Je réalise une petite application java en mode console qui intervient sur le SGBD FrontBase.

    Après plusieurs recherche, je vient vous demander de l'aide sur 3 choses car je n'arrive pas à trouver mon bonheur sur la toile.

    Tout d'abord j'ai trouvé ce code ('Existe-t-il une manière générique pour créer une BD avec JDBC ?') http://java.developpez.com/faq/jdbc/...divers#creerDB et je me demandé si cela était possible sous tout les SGBD??

    Ensuite, 2 questions concernant la base de données :
    1) Lorsque j'exécute mon programme, la première fois, il m'ouvre juste le SGBD, comment puis-je faire pour qu'il m'ouvre directement la base souhaité??
    2) Est-il possible via du code java de rafraichir la base de données?? Si oui, comment puis-je faire??

    Voici un peu de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import java.io.IOException;
    import java.sql.*;
     
    public class DictionnaireParametrable
    {
    	public static void main(String[] args) 
    	{
    		 System.out.print("\n                Création des tables et insertions des données                ");
     //ICI => Création de la base de données
    	     String url = "jdbc:FrontBase://localhost/DictionnaireParametrable_V3/user=_SYSTEM";
     
    	     try 
    	     {
    	    	 Class.forName ("com.frontbase.jdbc.FBJDriver") .newInstance();
    	    	 Connection con = DriverManager.getConnection(url);
     
    	 		Runtime runtime = Runtime.getRuntime();
    			Process process = null;
    	    	 try 
    	    	 {
    	    		 Statement monStatement = con.createStatement();
     
    	    		 System.out.println("\n\n************************************************************************************\n");
     
    	    		 String table = "CREATE TABLE Article(id integer, libelle varchar(50), prix integer)";
    	    		 monStatement.executeUpdate (table) ;
    	    		 String constraint = "ALTER TABLE Article ADD CONSTRAINT PK_Article PRIMARY KEY (id)";
    	    		 monStatement.executeUpdate(constraint);
    	    		 System.out.println("Création de la table 'Article' avec succée");
     
    	    		 String  donnees = "INSERT INTO Article VALUES (1, 'Levis 501', 45)";
    	    		 monStatement.executeQuery(donnees);
    	    		 donnees = "INSERT INTO Article VALUES (2, 'Sportwear', 12)";
    	    		 monStatement.executeQuery(donnees);
    	    		 donnees = "INSERT INTO Article VALUES (3, 'Honda hornet', 1500)";
    	    		 monStatement.executeQuery(donnees);
    	    		 donnees = "INSERT INTO Article VALUES (4, 'Suzuki bandit', 2000)";
    	    		 monStatement.executeQuery(donnees);
    	    		 donnees = "INSERT INTO Article VALUES (5, 'Yamaha FZ6', 1000)";
    	    		 monStatement.executeQuery(donnees);
    	    		 donnees = "INSERT INTO Article VALUES (6, 'Aprilia leonardo', 1250)";
    	    		 monStatement.executeQuery(donnees);
    	    		 donnees = "INSERT INTO Article VALUES (7, 'C# précis et concis', 9)";
    	    		 monStatement.executeQuery(donnees);
    	    		 donnees = "INSERT INTO Article VALUES (8, 'Tout sur le développement logiciel', 12)";
    	    		 monStatement.executeQuery(donnees);
    	    		 System.out.println("Les données de la 'table Article' sont insérées");
     
    	    		 // Ouverture du logiciel (du SGBD)
    	    		 process = runtime.exec(new String[]{"open", "/Applications/FrontBaseManager.app"});
     
    	    		 // ICI => je veux ouvrir la base de données nommée "DictionnaireParametrable_V3"
     
    		    	 System.out.println("Pour continuer : cliquer sur la touche entrer de votre clavier");
    		    	 int n = System.in.read();
     
     
    	    		 System.out.println("\n************************************************************************************\n");
     
    	    		 table = "CREATE TABLE TypeArticle(id integer, libelle varchar(30))";
    	    		 monStatement.executeUpdate(table);
    	    		 constraint = "Alter TABLE TypeArticle ADD CONSTRAINT PK_TypeArticle PRIMARY KEY(id)";
    	    		 monStatement.executeUpdate(constraint);
    	    		 System.out.println("Création de la table 'TypeArticle' avec succée");
     
    	    		 donnees = "INSERT INTO TypeArticle VALUES (1, 'Pantalon(s)')";
    	    		 monStatement.executeQuery(donnees);
    	    		 donnees = "INSERT INTO TypeArticle VALUES(2, 'Moto(s)')";
    	    		 monStatement.executeQuery(donnees);
    	    		 donnees = "INSERT INTO TypeArticle VALUES(3, 'Livre(s)')";
    	    		 monStatement.executeQuery(donnees);
    	    		 System.out.println("Les données de la table 'TypeArticle' sont insérées");
     
    	    		 String modif_article = "ALTER TABLE Article ADD id_TypeArticle integer";
    	    		 monStatement.executeUpdate(modif_article);	 
    	    		 String liaison = "ALTER TABLE Article ADD CONSTRAINT FK_Article_TypeArticle FOREIGN KEY (id_TypeArticle) REFERENCES TypeArticle(id)";
    	    		 monStatement.executeUpdate(liaison);
    	    		 String modif_donnees = "UPDATE Article SET id_TypeArticle = 1 WHERE id = 1";
    	    		 monStatement.executeUpdate(modif_donnees);
    	    		 modif_donnees = "UPDATE Article SET id_TypeArticle = 1 WHERE id = 2";
    	    		 monStatement.executeUpdate(modif_donnees);
    	    		 modif_donnees = "UPDATE Article SET id_TypeArticle = 2 WHERE id = 3";
    	    		 monStatement.executeUpdate(modif_donnees);
    	    		 modif_donnees = "UPDATE Article SET id_TypeArticle = 2 WHERE id = 4";
    	    		 monStatement.executeUpdate(modif_donnees);
    	    		 modif_donnees = "UPDATE Article SET id_TypeArticle = 2 WHERE id = 5";
    	    		 monStatement.executeUpdate(modif_donnees);
    	    		 modif_donnees = "UPDATE Article SET id_TypeArticle = 2 WHERE id = 6";
    	    		 monStatement.executeUpdate(modif_donnees);
    	    		 modif_donnees = "UPDATE Article SET id_TypeArticle = 3 WHERE id = 7";
    	    		 monStatement.executeUpdate(modif_donnees);
    	    		 modif_donnees = "UPDATE Article SET id_TypeArticle = 3 WHERE id = 8";
    	    		 monStatement.executeUpdate(modif_donnees);
    	    		 System.out.println("Modifications de la table 'Article' sont apportées");
     
    	    		 // Ouverture de l'application (vu que le SGBD est resté ouvert, il m'ouvre au niveau d'ou j'étais resté juste avant de retourner au code)
    	    		 process = runtime.exec(new String[]{"open", "/Applications/FrontBaseManager.app"});
     
    	    		 //ICI => Rafraichissement de la base de données
     
    		    	 System.out.println("Pour continuer : cliquer sur la touche entrer de votre clavier");
    		    	 n = System.in.read();
    .............
    Merci d'avance pour votre aide, vos conseils....

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Désolé mais pour ma part je ne comprends pas grand chose ...

    Citation Envoyé par loic20h28 Voir le message
    Tout d'abord j'ai trouvé ce code ('Existe-t-il une manière générique pour créer une BD avec JDBC ?') http://java.developpez.com/faq/jdbc/...divers#creerDB et je me demandé si cela était possible sous tout les SGBD??
    en théorie oui, en pratique peut être pas ...
    Es tu sûr que ton appli a besoin de créer une base de données ?
    N'est ce pas suffisant d'indiquer à l'utilisateur qu'il faut qu'il crée lui même une base avant de lancer l'outil ?
    Si tu veux vraiment le faire, dans ce cas limite les types de base utilisables au plus courantes ...

    Citation Envoyé par loic20h28 Voir le message
    Ensuite, 2 questions concernant la base de données :
    1) Lorsque j'exécute mon programme, la première fois, il m'ouvre juste le SGBD, comment puis-je faire pour qu'il m'ouvre directement la base souhaité??
    Si ta question, c'est comment ouvrir le logiciel frontEnd directement sur la base souhaité ... et bien regarde la doc et regarde si tu peux donner des paramètres quand tu lances en ligne de commande ... je ne vois pas trop sinon ...

    Citation Envoyé par loic20h28 Voir le message
    2) Est-il possible via du code java de rafraichir la base de données?? Si oui, comment puis-je faire??
    Qu'entends tu par rafraichir ?
    - Valider/Annuler les modifications effectuées ? si oui regardes du côté des commit()/rollback() ...
    - Rafraichir ton appli que tu as lancé par runtime exec ? Là ça va être un peu plus dur ... Tu ferais mieux d'afficher toi même tes tables, tu devrais pouvoir trouver du code tout fait assez facilement ...

    Petites questions en passant :
    • Pourquoi recréer les tables, les remplir, les mettre à jour à chaque fois que tu lances l'appli ? Ce n'est pas le but de ta base de données de conservées les données justement ?
    • On ne peut pas "cliquer sur la touche entrer de votre clavier" ... j'ai essayé 5 minutes mais ma souris est trop grosse ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à in
    Bonjour et merci pour ta réponse.

    en théorie oui, en pratique peut être pas ...
    Es tu sûr que ton appli a besoin de créer une base de données ?
    N'est ce pas suffisant d'indiquer à l'utilisateur qu'il faut qu'il crée lui même une base avant de lancer l'outil ?en théorie oui, en pratique peut être pas ...
    Es tu sûr que ton appli a besoin de créer une base de données ?
    N'est ce pas suffisant d'indiquer à l'utilisateur qu'il faut qu'il crée lui même une base avant de lancer l'outil ?
    Ben c'est le but premier de mon application, de construire la base de données donc si j'indique à l'utilisateur de la créer le programme ne servira plus à rien.

    Si tu veux vraiment le faire, dans ce cas limite les types de base utilisables au plus courantes ...
    Je comprend pas trop ce que tu entend par là, peux tu m'expliquer s'il te plais??

    Si ta question, c'est comment ouvrir le logiciel frontEnd directement sur la base souhaité ... et bien regarde la doc et regarde si tu peux donner des paramètres quand tu lances en ligne de commande ... je ne vois pas trop sinon ...
    En fait, ce que j'obtiens pour le moment lorsque je lance mon application c'est l'ouverture du logiciel (il me donne toute la liste des base de données) alors que moi je souhaiterais qu'il m'ouvre directement la base souhaité. J'ai déjà regardé dans la documentation que j'ai et pas grand chose d'indiqué.

    Qu'entends tu par rafraichir ?
    - Valider/Annuler les modifications effectuées ? si oui regardes du côté des commit()/rollback() ...
    - Rafraichir ton appli que tu as lancé par runtime exec ? Là ça va être un peu plus dur ... Tu ferais mieux d'afficher toi même tes tables, tu devrais pouvoir trouver du code tout fait assez facilement ...
    En fait ce que j'entend par raffraîchir c'est m'afficher la tables qui vient d'être crées via mon programme car pour le moment, lorsque ma deuxième table est crées par exemple, ben faut que je clique sur "Tables" pour que ma deuxième table apparaisse donc un peu lourd. Moi j'aimerais que cela se fasse automatiquement. Enfin si cela est possible.

    Petites questions en passant :

    * Pourquoi recréer les tables, les remplir, les mettre à jour à chaque fois que tu lances l'appli ? Ce n'est pas le but de ta base de données de conservées les données justement ?
    * On ne peut pas "cliquer sur la touche entrer de votre clavier" ... j'ai essayé 5 minutes mais ma souris est trop grosse ...
    Je veux créer ma base par le code c'est pour un projet.

    Cordialement.

  4. #4
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    si tu veux que ton programme crée lui-même la base, tu vas être obligé de tester que la création marche pour différentes "marques" de base de données. C'est pour ça que je te conseillais de limiter un peu les possibilités.

    comme ta question est "est ce que ce bout de code marche pour toutes les bases", ben je te dis oui, mais il peut toujours y avoir des exceptions je pense.

    Toutefois, comme tu veux utiliser frontbase, je ne comprends pas pourquoi tu t'inquiète de savoir si ça marchera pour MySQL, Oracle, Posgres ... ? Ou alors je n'ai pas compris, dans ce cas, reformule un peu ta question ...

    Pour le reste, si tu peux faire ce que tu veux en ligne de commande, et bien il faut lire la doc pour voir les commandes dispo. Si ce n'est possible qu'en "cliquant sur des boutons" de l'appli, ben là je ne vois pas comment tu pourrais faire ça simplement ... A la limite, tu peux peut être simuler des "F5" et des raccourcis clavier mais bon, ça va vraiment pas être propre ...

    L'autre solution c'est de ne pas utiliser FrontBase pour afficher mais du java directement ... là au moins tu pourras faire ce que tu veux.

    Franchement, tu devrais tout faire dans un script SQL lancé ,à la limite, par ton appli java. Si c'est pour faire un installeur, ça sera beaucoup plus simple.

    Bon courage ....
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à in
    comme ta question est "est ce que ce bout de code marche pour toutes les bases", ben je te dis oui, mais il peut toujours y avoir des exceptions je pense.

    Toutefois, comme tu veux utiliser frontbase, je ne comprends pas pourquoi tu t'inquiète de savoir si ça marchera pour MySQL, Oracle, Posgres ... ? Ou alors je n'ai pas compris, dans ce cas, reformule un peu ta question ...
    Ma question c'était est-ce que ce code est utilisable pour tout les SGBD dont et surtout FrontBase.

    Toutefois, comme tu veux utiliser frontbase, je ne comprends pas pourquoi tu t'inquiète de savoir si ça marchera pour MySQL, Oracle, Posgres ... ? Ou alors je n'ai pas compris, dans ce cas, reformule un peu ta question ...

    Pour le reste, si tu peux faire ce que tu veux en ligne de commande, et bien il faut lire la doc pour voir les commandes dispo. Si ce n'est possible qu'en "cliquant sur des boutons" de l'appli, ben là je ne vois pas comment tu pourrais faire ça simplement ... A la limite, tu peux peut être simuler des "F5" et des raccourcis clavier mais bon, ça va vraiment pas être propre ...

    L'autre solution c'est de ne pas utiliser FrontBase pour afficher mais du java directement ... là au moins tu pourras faire ce que tu veux.

    Franchement, tu devrais tout faire dans un script SQL lancé ,à la limite, par ton appli java. Si c'est pour faire un installeur, ça sera beaucoup plus simple.
    Merci pour tes conseils...... je vais explorer tout ça.

    Cordialement

Discussions similaires

  1. pb ouverture d'un base de donnée IB
    Par youcef_b_dz dans le forum Bases de données
    Réponses: 1
    Dernier message: 09/09/2006, 15h43
  2. Réponses: 2
    Dernier message: 08/06/2006, 20h49
  3. Création base de données Oracle sous Winwows
    Par madina dans le forum Oracle
    Réponses: 2
    Dernier message: 19/05/2006, 09h13
  4. création base de données avec easyphp
    Par Battosaiii dans le forum Débuter
    Réponses: 5
    Dernier message: 29/06/2004, 18h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo