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 :

Application Client Serveur avec DB Oracle


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut Application Client Serveur avec DB Oracle
    Bonjour,

    Je souhaiterais réaliser une application client-serveur en Java qui enverrait un query vers une base de données Oracle et qui me permettrais d'afficher le résultat de cette question via l'application cliente. Je sais que je dois utiliser des Threads et des Sockets mais je pautauge un peu beaucoup là-dedans, vous auriez un chouette exemple pour moi s'il vous plaît ?!

    J'ai déjà questionné mon amis Google et ce forum mais je n'ai rien trouvé qui m'aide vraiment. (Faut croire que je ne suis vraiment pas assez doué pour adapter les codes que je peux trouver sur internet :-( ).

    D'avance merci.
    Bien à vous.
    Ouranos21

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Ce n'est pas nécessaire d'utiliser des threads et des sockets pour cela.
    Il te faut juste creer une connexion a ta base de données Oracle via JDBC.

    Regarde dans cette section des tutoriels :
    http://java.developpez.com/cours/#jdbc

    Je pense que cela devrait répondre à tes questions.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    Je vais donc développer un peu plus mon truc.

    Cette application est une application de monitoring qui doit tourner simultanément (et donc en parallèle) sur deux serveurs. Et si un à un problème, l'autre doit être au courant. De plus cette application doit tourner en background. Et indéfiniment. On pourrait par exemple, quand on à besoin de voir ce que renvoi la requête, taper en ligne de commande côté client:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java Monitoring /status
    Où l'application cliente demanderais à l'application serveur de lancer une seule requête et de rediriger la résultat de la requête vers le flux de sortie histoire qu'on puisse récupèrer ça côté application cliente.

    Pour voir ce que ça donne... en gros.

    Je ne sais pas si je suis assez clair dans mon explication, mais d'après mes recherches j'ai besoin de sockets et de threads.

    Et c'est là que je me perds. Je pourrais vous donner mon code, mais je sais pas si c'est une bonne idée, même moi je m'y perd. M'enfin, si y'avait une source facile (et qui enverrais une requête vers un serveur pour afficher la réponse côté client) pour que je pige les concepts, parce que là :S

    Merci tout de même pour la réponse Willoi ^^

    PS: L'OS côté serveur est un Linux...

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    J'avance petit à petit dans mon truc, mais je crois de mon souci viens de mon application cliente.

    A quoi devrait ressembler une application cliente qui, par exemple lorsqu'on la démarre et qu'on écrit "status" (en ligne d ecommandes) nous renvoie le résultat à l'écran d'une requête SQL qui s'effectue côté serveur ? (bête requête du genre "SELECT noms FROM ma_table;"

    Ou alors à la limite juste une application cliente qui, lorsqu'on la démarre, affiche tout bêtement le résultat d'une requête SQL qui tourne côté Serveur. En gros je sais que côté serveur mon appli tourne bien. Là avec mes socket, mon application serveur démarre et attend une qu'un client s'y connecte, lorsque le client est connecté, la requête sur la DB se lance, ça fonctionne côté serveur j'en suis sure, mais j'arrive pas à afficher le résultat de cette requête côté client... .

    Comme ça je pourrais comparer avec ce que je fais et voir si mon problème vient de ce que je fais du côté application serveur, ou du côté client. Mais je pense quand même que ça vient du côté client.

    Merci.

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    Allez je partage quand même mon code supposé foireux. La méthode select() exécute ma requête SQL et est censée afficher le résultat de la requête.

    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
     
    public void select(String request)
    	{
    		int cpt=0;
    		String db_name=" ";
    		//request 
    		try 
    		{
    			Statement stm = con.createStatement();
    			rs = stm.executeQuery(request);
    			BufferedReader entreeClavier = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
          		DataOutputStream sortieVersClient = new DataOutputStream(connexion.getOutputStream());
          		//PrintWriter sortie = new PrintWriter(connexion.getOutputStream(), true);
    			while (rs.next()) //fetching the resultset
    			{
    			    	db_name=rs.getString(1);
    			    	sortieVersClient.writeBytes(db_name+ " ");
    			    	//sortie.println(db_name + " ");
    			    	System.out.println(db_name+ " ");
    			    	//System.out.println("Ici ça passe, YEAH !");
    			    	cpt++;
    			}
    			//sortie.println(cpt + " Row(s) Found");
    			sortieVersClient.writeBytes(cpt + " Row(s) Found"); 	//Displays the number of rows returned.
    			rs.close();   							//close the resultset
    		} 
    		catch (SQLException e) 
    		{
    			tool.display("Abnormal request execution");
    		}
    		catch(IOException exep)
    		{
    			System.out.println("Stream Problem");
    		}		   
    	}
    Ca, ça tourne côté serveur.

    J'ai fais quelques test avec PrintWriter et DataOutputStream, voilà pourquoi les commentaires...

    Côté client:

    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
     
    BufferedReader entreeClavier = new BufferedReader(new InputStreamReader(System.in));
    			Socket connexion = new Socket("127.0.0.1", 9000);
    			DataOutputStream sortie = new DataOutputStream(connexion.getOutputStream());
    			//PrintWriter sortie = new PrintWriter(connexion.getOutputStream(), true);
    			BufferedReader entreeDepuisServeur = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
    			String envoi=" ";
    			boolean continu = true;
    			while (true) 
    			{
     
    				while(continu=true)
    				{
    					envoi = entreeClavier.readLine();
    					if(envoi.compareTo("status")==0)
    					{
    						continu=false;
    					}
    					else
    					{
    						System.out.println("Invalid Command");
    						System.out.println("Command available for the moment: status");
    					}
    				}
     
    				//sortie.println(envoi);
    				sortie.writeBytes(envoi);
    				System.out.println(envoi);
     
    				String reponseDuServeur = entreeDepuisServeur.readLine();
     
    				System.out.println("Recu du serveur: " + reponseDuServeur);
     
    				connexion.close();
    }
    		}
    		catch(IOException e) 
    		{ 
    			System.out.println("Erreur : "+e); 
    		}
    		System.out.println("Connexion closed...");
    Et ça c'est côté client...

    Bon, où ai-je fais une bête erreur ?

    EDIT:

    J'ai oublié de vous coller quelques lignes de 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
     
    public class ServeurThread 
    {
      public static void main(String[] args) 
      {
     
        try 
        {
          ServerSocket service = new ServerSocket(9000); //On crée le Socket
          while (true) //boucle infinie
          {
            Socket connexion = service.accept();      //on lui demande d'attendre une requête client
            new ThreadConnexion(connexion).start(); //on instancie l'objet qui fait les traîtements
          }
        }
        catch (IOException e) 
        { 
        	System.err.println(e); 
        }
      }
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public ThreadConnexion(Socket connexion) 
      {
        this.connexion = connexion;   
      }
    /EDIT
    Merci aux gens plus doués que moi ! ^^

  6. #6
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Mas au juste quel est ton probleme ?
    si tu as des erreurs : donne la trace complete de tes exceptions.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Application client serveur avec GWT
    Par flykev dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 03/05/2008, 15h43
  2. application client-serveur avec les sockets
    Par matheo600 dans le forum C++
    Réponses: 1
    Dernier message: 20/04/2008, 17h21
  3. application client/serveur avec les sockets
    Par baya1 dans le forum JBuilder
    Réponses: 1
    Dernier message: 24/02/2007, 15h37
  4. Réponses: 1
    Dernier message: 01/02/2006, 17h48

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