Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONNEXION EN JAVA À UNE BASE DE DONNÉE EN LIGNE DE FAI


Information sur le tutorial

Catégorie :JDBC Date de création : 21/07/2008 13:40:32 Vu : 3 863 fois

Note :
Aucune note

Commentaire sur cette source (24)
Ajouter un commentaire et/ou une note

Description

Ce tutoriel vous explique comment vous connecter à une base de données d'un site en ligne en Java.

Bien souvent, les connexions externes aux bases de données sont bloqués, et la méthode que nous allons voir permet de contourner cette restriction.

Cette méthode est donc particulièrement destinée aux base de données de site de FAI tels que Free, Alice, Orange etc...

Tutorial

Introduction

Nous allons donc nous connecter, dans notre exemple, à une base dedonnée de type Free, mais il est important de garder à l'esprit que çamarche avec tous les types de base mysql en ligne.

Dans notre exemple, nous imaginons que nous sommes l'administrateur d'un site ayant les caractéristique suivantes :

    * FAI : Free
    * Nom du site : monSite.free.fr
    * Serveur SQL : sql.free.fr
    * Nom d'utilisateur (SQL et FTP) : userFree
    * Mot de passe (SQL FTP) : mdpFree

Maintenant que tout cela est clair, nous allons :

   1. Télécharger le driver DbwConnection
   2. Uploader le fichier serveur sur la racine du site
   3. Nous connecter à cette base de donnée
   4. Executer et afficher le résultat d'une requête.
   5. Récapitulatif du code
   6. Conclusion


1. Télécharger le driver DbwConnection

Vous pouvez le trouver à cette adresse :
https://sourceforge.net/projects/dbwconnection

Cliquez sur "Download DbwConnection", puis sélectionnez la dernière version (la 0.9.2 actuellement).

Vous obtenez donc une archive Zip, qu'il vous faut décompresser.

Un nouvez dossier vas se créer et contiendra au moins les fichiers suivants :

Dbw.jar ---> Le driver servant à se connecter à la base.
dbw.php ---> La partie serveur du programme.



2. Uploader le fichier serveur sur la racine du site

Vous l'aurez compris c'est facile, vous prenez le fichier dbw.php et vous l'uploader par exemple à la racine du serveur.
Dans notre exemple il se trouvera donc à cet emplacement :

http://monSite.free.fr/dbw.php



3. Nous connecter à cette base de donnée

Il vas donc faloir créer un nouveau projet Java, et ajouter le fichier"Dbw.jar" au classpath, c'est à dire aux librairy de ce projet.
Si vous ne savez pas faire sous Netbeans, et comme ce n'est pas l'objetde ce tutoriel, voici un lien qui vous expliquera comment faire : http://dbwconnection.wiki.sourceforge.net/tuto_install_driver

Dans le code, nous allons donc commencer par importer le pacquage requis, pour cela il faudra indiquer :


import dbwConnection.*;

Pour créer la connexion, il faut instancier l'objet DbwConnection, avec les paramètre spécifique à votre site :

DbwConnection conn = new DbwConnection(location, username, pwd, host, dataBase);


Ce qui donne dans notre cas :

DbwConnection conn = new DbwConnection("http://monSite.free.fr/dbw.php", "userFree", "mdpFree", "sql.free.fr", "monSite");



4. Executer et afficher le résultat d'une requête.

La connexion est maintenant créée, vous pouvez exécuter des requêtesavec la méthode conn.executeQuery(String query), ou encore la methodeconn.executeUpdate(String upadate).

Dans cet exemple, nous exécutons une requête, et nous affichons à l'écran les deux premières colonnes :

DbwConnection conn = new DbwConnection(location, username, pwd, host, dataBase);
 
ResultSet rs = conn.executeQuery("SELECT * FROM `categories`");
 
while (rs.next()) {
     System.out.print(rs.getString(1));
     System.out.print(rs.getString(2));
}


5. Récapitulatif du code

Au final, notre code se compose comme cela :

// On importe le driver
import dbwConnection.*;
 
public class Main {
 
    public static void main(String[] args) {
 
        // location = la ou se trove le fichier dbw.php sur votre serveur
        String location = "http://monSite.free.fr/dbw.php";
 
        // username = votre nom d'utilisateur pour vous connecter a votre base SQL
        String username = "userFree";
 
        // pwd = votre mot de passe pour vous connecter a votre base SQL
        String pwd = "mdpFree";
 
        // host = l'adresse de votre serveur SQL
        String host = "sql.free.fr";
 
        // dataBase = le nom de votre base de donnee SQL.
        String dataBase = "monSite";
 
        // impératif de mettre des try/catch, pour capturer les exceptions
        try {
 
            DbwConnection conn = new DbwConnection(location, username, pwd, host, dataBase);
 
            ResultSet rs = conn.executeQuery("SELECT * FROM `categories`");
 
            while (rs.next()) {
                System.out.print(rs.getString(1));
            }
 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}



6. Conclusion

Il est donc maintenant possible de se connecter, depuis un programme Java, à n'importe quel base mysql d'un site en ligne.
Pour toutes questions/critiques/suggestions, vous pouvez me contacter par mp, ou laisser un message sur sur tutoriel.

21 juillet 2008 13:42:25 :
Rend un lien cliquable
signaler à un administrateur
Commentaire de zagyoshi le 21/07/2008 13:44:20

J'ai essayer de rendre le lien de téléchargement cliquable, mais la textbox est tellement évoluée qu'elle prend en compte les modifications qu'une fois sur 10 ^-^

signaler à un administrateur
Commentaire de Blacknight91titi le 25/07/2008 14:32:50

Bonjour,

Excellent tutoriel. J'ai commencé à me mettre au java il y a quelques semaines pour un gros projet et j'ai effectivement besoin de me connecté à une base de donnée.

Clair, facile à comprendre, du moins pour quelqu'un qui a déja d'autre base en php et sql par exemple.

Si maintenant je souhaite me connecter à une base de donnée local (sur ma machine) sans passer par php (ce qui nécéssiterait appache pour l'éxécuter), la méthode est-elle très différente ou il faut juste prévoir quelques modifications ?

Je serai intêresser par cette modification.

Encore merci

Blacknight
9/10

signaler à un administrateur
Commentaire de Blacknight91titi le 25/07/2008 14:37:07

Il semble que ma note n'est pas été prise en compte...
Je repost un message pour l'attribuée.

En m'excusant pour la gène occasionée.

signaler à un administrateur
Commentaire de Blacknight91titi le 25/07/2008 14:39:17

La note ne semble pas s'attribuer.

Si un admin passe par la, merci de supprimer mes doubles posts (et je laisser que le dernier). Et, si possible, m'indiquer (par message perso de préférence afin d'éviter le hors sujet ici) pourquoi la note ne semble pas vouloir être affecté à ce tutoriel.

signaler à un administrateur
Commentaire de Diable11 le 25/07/2008 15:36:07

J'ai une erreur sur ces lignes du code :

           DbwConnection conn = new DbwConnection(location, username, pwd, host, dataBase);

           ResultSet rs = conn.executeQuery("SELECT * FROM `categories`");
Aidez-moi a les arranger s'il vous plait.

signaler à un administrateur
Commentaire de PCPT le 25/07/2008 18:58:05 administrateur CS

Blacknight91titi -> il faut d'abord survoler les étoiles, cliquer sur celle que tu veux attribuer, poster ton commentaire, [ajouter]

je supprimerai ensuite tes 2 derniers messages (et le mien).
raison : tu as sans doute juste survolé sans cliquer

signaler à un administrateur
Commentaire de zagyoshi le 25/07/2008 21:23:12

Bonjour Blacknight91tit, tout d'abord merci pour ton commentaire =)

Ce tutoriel est en effet réservé aux connexions en passant par PHP, mais pour se connecter directement à une base Mysql en local, il te faut utiliser le driver mysql.
Je te conseil de suivre cette source : http://www.javafr.com/codes/CONNEXION-BASE-DONNEES-MYSQL_32758.aspx

Bonjour Diable11, a tu adapté les variables "locations", "username", "pwd", "host", et "database" avant d'exécuter le code ?

Il faut aussi adapté la requête SQL à ta base de donnée, il faut que la table "catégorie" existe bien dans ta base de données.

A +

signaler à un administrateur
Commentaire de Blacknight91titi le 27/07/2008 14:27:40

@PCPT : Je refais un essai, dans le cas ou sa marche... Et bien je ne comprendrais pas, ce n'est pourtant pas la première fois que je note. Ceci-dit je ne me souviens pas avoir déja noter un tutoriel avec le nouveau (plus maintenant cependant) système de notation qui oblige à poster un commentaire pour justifier sa note.

Encore désoler pour le dérangement.

signaler à un administrateur
Commentaire de PCPT le 27/07/2008 14:41:30 administrateur CS

j'essaye de noter pour toi :
"Blacknight
9/10"

signaler à un administrateur
Commentaire de mechtaly le 28/07/2008 20:34:34

bonsoir, merci pour ce tuto!

j'ai bo essayé de telecharger DbwConnection_0.9.2 et DbwConnection_0.9 de l'interface du projet chez sourceforge, c'est imposible!!! il me repond par une ereur et le compteur de telechargement est a zero!!!

------------------
Error

Missing Parameters

One or more of the parameters required to process your download request were missing. Please return to the previous page and try again.

------------------

si quelqu'un l'a deja hebergé quelque part ou bien a le site officiel du projet nous aide pr ca!!
merci d'avance ;)

signaler à un administrateur
Commentaire de zagyoshi le 28/07/2008 21:57:31

Ah oui en effet, c'est surement un problème interne à sourceforge.

Maintenant ça à l'air de marcher chez sourceforge, mais je l'ai mis sur mon ftp perso au cas ou ça se reproduit :

http://zagyoshi.free.fr/dbwconnection/

Voilà, bon courage ;-)

signaler à un administrateur
Commentaire de mechtaly le 28/07/2008 23:14:46

ca march nikel!!!

merci zagyoshi

juste une question! est ce que c'est applicatif aussi pour les requettes d'insertion et de creation ??

signaler à un administrateur
Commentaire de mechtaly le 28/07/2008 23:59:02

bon, j'ai trouvé pour les requettes d'insertion comment fair! ;)
on utilise seulement la methode executeUpdate a la place de executeQuery.


voila:

DbwConnection conn = new DbwConnection(location, username, pwd, host, dataBase);

boolean execute = conn.executeUpdate("INSERT INTO `etudiants` (`id`, " +
                    "`nom`, `prenom`, `groupe` ) VALUES (4, 'pierre', "+
                    "'dupont', 'groupe7');");

if(execute){
   // la requete a bien ete executee
}else{
   // la requete n'a pas ete executee
}

mais je laisse ma question d'avant juste pour les requettes de creation! ;) comment s'y faire?

merci d'avance

signaler à un administrateur
Commentaire de zagyoshi le 29/07/2008 01:00:41

Bonjour ^-^


Ravi que ça marche !
En fait la règle est très simple :
Pour les requête qui nécessite un retour de données (donc SELECT entre autres), il faut faire executeQuery().

Pour toutes les autres requêtes, il faut faire executeUpdate(), pour ça que l'application ne cherche à te retourner des résultats qui seront forcément vides !

bon courage pour la suite et n'hésite pas à poser d'autre commentaire/questions/critiques/bugs. ;-)

signaler à un administrateur
Commentaire de zagyoshi le 29/07/2008 01:05:35

Donc pour répondre clairement :
Les requête de CREATE, INSERT, DROP, UPDATE etc c'est executeUpdate() ^-^

signaler à un administrateur
Commentaire de mechtaly le 29/07/2008 22:23:23

ok, et merci pour tout :)

signaler à un administrateur
Commentaire de gmi19oj19 le 31/08/2008 10:24:56

Tutorial très bien fait et utile, que je ne manquerai pas de mettre en oeuvre pour test et quelques petites applis perso. Merci !

signaler à un administrateur
Commentaire de wissou2 le 08/09/2008 18:32:34

très bien  

signaler à un administrateur
Commentaire de docv266 le 07/10/2008 15:20:35

C'est du très bon boulot.
Cependant je crois que Free vient de contrer ton drivers, je suis pas sûr de moi hein...

Quand je lance l'appli à partir d'eclipse, j'ai une erreur :
java.sql.SQLException: Erreur d'adresse url : http://jdufaud.free.fr/dbw.php?psw=xxxxxx&db=jdufaud&host=sql.free.fr&username=jdufaud&type=query

Et quand je rentre cette url dans firefox directement j'ai ça :
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'jdufaud'@'172.20.245.42' (using password: YES) in /mnt/165/sdb/5/f/jdufaud/dbw.php on line 95

Quand pensez-vous?

signaler à un administrateur
Commentaire de docv266 le 07/10/2008 15:29:26

Ben alors pourquoi on supprime mes commentaires?

signaler à un administrateur
Commentaire de zagyoshi le 07/10/2008 15:40:32

DOCV266 à dit :
"Quand pensez-vous?"
Roo nous on pense tout le temps quasiment  ^-^


Le plus sérieusement, ça ressemble à une erreur de mot de passe ou d'utilisateur.
Vérifie donc ça, et si c'est sûr que ce sont les bons, si c'est pas le cas vérifie aussi que l'adresse est la bonne. si ça marche toujours pas reviens nous voir ^-^.

signaler à un administrateur
Commentaire de docv266 le 07/10/2008 16:04:52

La honte le "quand", désolé.

Bon, le login et mot de passe sont bien ceux nécessaires pour se conecter à phpMyAdmin n'est-ce pas?

Le truc c'est que là je suis pas chez moi, mais dans une grande entreprise (dont je tairais le nom par peur des représailles), qui filtre méchament les accès internet, ça peut venir de ça, sachant que j'ai accès à phpMyAdmin sans problème?

signaler à un administrateur
Commentaire de zagyoshi le 07/10/2008 16:51:49

Oui oui c'est ces mots de passe là.

Je viens de tester sur mon propre site et ça marche bien.
si tu copie cette adresse url, en remplaçant TONMOTDEPASSE par ton mot de passe, et que ça marche toujours pas, c'est que c'est effectivement une problème avec ton mot de passe.

"http://yoshill44.free.fr/monsite/dbw.php?psw=TONMOTDEPASSE&db=jdufaud&host=sql.free.fr&username=jdufaud&type=query"

Ca veux pas dire que tu l'a forcément mal copier, mais peut-être qu'il a des caractères spéciaux, des accents ? si oui, c'est vrai que j'ai pas encore tester avec les accents, et que donc l'application ne les gère pas encore. (mais ça serait simple à régler je peut même te le faire pour demain) (ou alors tu change de mot de passe).

j'attends ta réponse, bonne chance ^-^.

signaler à un administrateur
Commentaire de zagyoshi le 11/10/2008 18:40:12

Bonjour, bizarre j'avais poster une réponse mais elle n'apparait plus...

Toujours est-il que la version 0.9.4 qui vient juste de sortir règle surement ton problème, puisqu'elle lève des erreurs spécifiques au problème (si c'est le mot de passe, la base de données ou l'adresse url de dbw.php qui pose problème).

Elle est disponible à cette adresse :

https://sourceforge.net/project/showfiles.php?group_id=233844&package_id=283785

Bonne continuation ;-)

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,031 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.