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 :

creation de base de données


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut creation de base de données
    bonjour, je voudrai créer une base de données ss postgré et j'ai vu dans les FAQ que c'etait possible grace au code suivant:
    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
     
    public static Connection createMysqlDatabase(Connection factice, String user, 
                                                 String pass, String nomBase) 
                                                 throws SQLException{
       Connection connection = null;
       Statement statement = null;
       try{
          statement = factice.createStatement();
          statement.execute("CREATE DATABASE "+nomBase);
          String url = factice.getMetaData().getURL();
          url = url.substring(0,url.lastIndexOf("/"));
          url += "/"+nomBase;
          connection = DriverManager.getConnection(url,user,pass);
       }catch(SQLException e){
          SQLException sqle = new SQLException("Création de la base impossible");
          sqle.setNextException(e);
          throw sqle;
       }finally{
          try{statement.close();}catch(Exception e){}
       }
       return connection;
    }
    son utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Class.forName("com.mysql.jdbc.Driver");
    String url = "jdbc:mysql://host/baseLien";
    String user = "user";
    String pass = "password";
    // on commence par se connecter à la base factice
    Connection factice = DriverManager.getConnection(url,user,pass);
    // on crée la base et on récupère une Connection
    Connection connection = createMysqlDatabase(factice,user,pass,"NouvelleBase");
    // on peut finalement fermer notre Connection factice qui ne nous sers plus à rien
    factice.close();
    baseLien c'est une base de données qui est créée par un utilisateur? ou une base qui existe deja dans le moteur de base de données?

    Il n'ya pas d'autre moyen de créer un base de données?

  2. #2
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Par exemple, sur ton PC, si tu as MySQL d'installé, l'url d'accès à une base dbproject sera : "jdbc:mysql://localhost:3306/dbproject"

    Dans l'exemple que tu cites, baseLien est à priori le nom d'une base de donnée qui te permet d'obtenir une connexion factice.
    Et dans le code de la methode createMysqlDatabase(), l'url est modifié avec le nouveau nom ("NouvelleBase" dans l'exemple)

    A priori, la bdd baseLien n'existe pas dans le SGBD de celui qui donne l'exemple (à vérifier) et n'existe pas dans ton SGBD Postgre si tu viens juste de l'installer (j'en suis sûr).

    Ce que je peux te dire :

    1 - Passer des ordres DDL (ordres CREATE, DROP, ...) qui travaillent sur la structure de la bdd directement en Java sont moins fréquents que les ordres DML (INSERT, UPDATE, DELETE) qui travaillent sur les données de la bdd. Aussi, pour un débutant, je ne suis pas sûr que ce soit la meilleure et la plus simple façon de commencer.

    2 - Généralement, on crée la base de donnée (dbproject par exemple) et sa structure (tables et ...) avec des outils (Toad, MySQLQueryBrowser, ...) ou avec un interpréteur ligne de commande fourni avec la bdd qui chargent des fichiers sql qui contiennent des ordres DDL : (create DATABASE dbproject ; create TABLE tb ... )

    3 - J'ai un doute sur le fait que l'ordre create database fonctionne sur toutes les bdd ? Sur mySQL, c'est sûr mais avec Postgré, à vérifier.

    Ce que je te conseille :
    Si tu as installer le noyau du sgbd postgre : postgresql-8.1.3-1.zip,
    c'est d'installer en complément un client graphique pour ce SGBD : pgadmin3-1.4.1.zip. Avec ce client, tu pourras créer ta base (dbproject par exemple) puis tes tables.
    Ensuite, avec java, tu as "seulement" besoin d'obtenir une connexion sur cette base "jdbc:postgresql://localhost:5432/dbproject" pour pouvoir faire des insertions, modifications, suppressions.

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    merci pour ta reponse.
    en fait si j'ai besoin de savoir si on peut creer un bd avec java c'est parce que je dois créer un installeur qui installe une application java qui utilise une base de données sur postgré.Mais a priori postgre n'est sensé etre installé sur la machine et mon installeur doit donc aussi l'installer. Dans ce cas la, il n'y a que les bases de données par defaut non? mon application doit utiliser une base de données qui doit etre crée par du code et non par pgadmin(par ex) lors de sa premiere execution.

    Une autre question: on peut pas remplir une base de données a partir d'un fichier? faut absolument passer par un interpreteur de ligne de commande?

  4. #4
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    D'accord. C'est vrai que là, la problématique est différente !

    Donc, avec ton installateur Java, tu peux bien entendu :

    - Créer ta base de donnée avec des ordres DDL passés en java. Suivre l'exemple fourni pour MySQL mais vérifier que (Create DataBase) est un ordre valide pour Postgre (On parle aussi de schema). Pense à utiliser le driver JDBC pour Postgre.

    - Remplir ta base avec des ordres DML passés en Java. Bien sûr que tu peux faire ça avec des fichiers (je pensais juste que pour un débutant et un autre type d'utilisation, c'était pas le plus simple)
    Solution 1: Lire un fichier de requetes SQL "Insert ...;" les unes à la suite des autres et via java, envoyer ces requêtes aux sgbd.
    Solution 2: Lire un fichier csv(à séparateur ';') ou tu récupères sur chaque ligne du fichier un enregistrement (ligne) de table et entre chaque ';' la valeur des champs (colonnes) puis tu fabriques la requête d'insertion avec ces valeurs.
    Solution 3: Lire un fichier XML qui a une structure qui te permet de répérer les lignes et les colonnes des tables puis tu fabriques la requête d'insertion avec ces valeurs.


    Remarque : En général, il n'y a pas de bases par défaut si ce n'est la base système (Ex sous MySQL) qui mémorise les structures des autres bases. Bien entendu pour passer des ordres DDL ou DML, il faut t'assurer que l'utilisateur (login password) utilisé conjointement avec l'URL ait bien les droits de passer de tels ordres. (Si tu utilises le root, à priori, oui)

  5. #5
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    merci encore de me repondre. Tu m'es d'un grand secours!!

    -La requete CREATE database est valide sous postgré. De plus il semble qu il existe une base de données par defaut(elle etait la sans que je la crée) qui se nomme postgré ce qui me permet d'utiliser le code precedent.Et ca marche!!
    Le seul probleme sera le mot de passe; ca aurait ete bien de pouvoir le recupérer...

    -Pour remplir ma base je pense que je vais utiliser la 1ere de tes solutions.(elle semble etre la moins compliquée).

  6. #6
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Citation Envoyé par superalex_22
    De plus il semble qu il existe une base de données par defaut(elle etait la sans que je la crée) qui se nomme postgré.
    C'est comme sous mySQL alors, elle doit contenir les structures des autres bases.

    Citation Envoyé par superalex_22
    Le seul probleme sera le mot de passe; ca aurait ete bien de pouvoir le recupérer...
    Le compte root et le mot de passe sont normalement défini à l'installation de postgre par la personne qui l'installe. Maintenant, si tu l'installes par programme, je ne sais pas comment tu vas le définir ? A moins que si tu n'en met pas, il n'y a pas de mdp ou c'est un truc du style root/admin ou autre ... voir doc postgre.

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    Le programme ne fera que lancer l installation de postgre. Son installation se fait dc comme d'habitude. la version 8.1 de postgre ne permet pas de ne pas entrer de mot de passe.
    il faudra peut etre dire dans un readme de mettre comme utilisateur et mot de passe ce que l'on utilise dans notre code.
    Sinon je vois pas trop comment faire, a moins de tenter le coup avec des versions antérieures de postgré pour voir si elles permettent de ne pas rentrer de mot de passe.

Discussions similaires

  1. creation de base de donnée sql server
    Par jack123 dans le forum C#
    Réponses: 7
    Dernier message: 04/01/2008, 09h55
  2. creation de base de données oracle
    Par fatib dans le forum Oracle
    Réponses: 1
    Dernier message: 12/07/2007, 15h53
  3. [MySQL] [Creation Messagerie] Base de donnée ou serveur Mail
    Par Gwen38 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/05/2007, 14h39
  4. VB6 et ADO creation de base de données
    Par thierry007 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/08/2006, 08h43
  5. Creation de base de donnée Aidez moi S.V.P
    Par MHD dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2005, 10h50

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