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

Servlets/JSP Java Discussion :

[MVC][SQLServer 2005 trial] problème d'accès aux données


Sujet :

Servlets/JSP Java

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut [MVC][SQLServer 2005 trial] problème d'accès aux données
    Bonjour,

    J'apprends l'architecture MVC, et j'ai créé un programme divisé en 3 couches:
    • web
    • metier
    • accès aux données

    Le programme gère des réservations de voitures effectuées par des personnes (la couche metier comprend les classes Voiture, et Personne), sans gestion de l'historique.La base de données comprend trois tables: voitures, personnes, et réservations. Enfin, la couche données comprend une interface (échange avec la couche métier) et une classe implémentant cette interface.
    Mon problème: au départ, j'ai utilisé une méthode "main" dans la classe Gare (qui implémente l'interface d'accès à la bdd), pour accéder aux données (pilote JDBC de Microsoft); après quelques réglages, le code ressemblait à ceci:

    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
     
    package coucheDatas;
     
    import java.util.Vector;
     
    import coucheMetier.Personne;
    import coucheMetier.Voiture;
    import java.sql.*;
     
    public class Gare implements iAccèsDatas {
     
              public static void main(String[] args) {
              // TODO Raccord de méthode auto-généré
     
                   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                   String url="jdbc:sqlserver://localhost;user=olivier;password=pw";
                   Connection conn=DriverManager.getConnection(url);
                   DatabaseMetaData metaData=conn.getMetaData();
    	       System.out.println(metaData.getDatabaseProductName());
                   System.out.println(metaData.getDriverName());
                   System.out.println(metaData.getUserName());
              } 
              catch (Exception e){
                   System.err.println("Erreur :"+e);
              }
     
    }
    ... etc
    et ça marchait. 2e étape, j'ai enlevé la méthode main et créé à la place la méthode initConn appelée lors de la création du contrôleur: cela donne

    -CONTROLEUR:
    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
     
    package coucheWeb;
     
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.util.Enumeration;
    import java.util.Vector;
    import java.sql.*;
    import coucheMetier.Personne;
    import coucheMetier.Voiture;
    import coucheDatas.Gare;
     
    /**
     * Servlet implementation class for Servlet: Contrôleur2
     * 
     */
    public class Controleur extends javax.servlet.http.HttpServlet implements
    		javax.servlet.Servlet {
    	/*
    	 * (non-Java-doc)
    	 * 
    	 * @see javax.servlet.http.HttpServlet#HttpServlet()
    	 */
     
    	private Gare maGare = new Gare();
     
    	public Controleur() {
    		super();
    	}
     
    	public void init(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
     
    		System.out.println("dans le servlet");
    		doInit(request, response);
     
    	}
     
    	public void doInit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		maGare.initConn();
     
    		request.setAttribute("choix", "");
    		 getServletContext().getRequestDispatcher("/WEB-INF/vues/pageChoix.jsp")
    				.forward(request, response);
    	}
    -GARE
    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
     
    package coucheDatas;
     
    import java.util.Vector;
     
    import coucheMetier.Personne;
    import coucheMetier.Voiture;
    import java.sql.*;
     
    public class Gare implements iAccèsDatas {
     
    	/**
    	 * @param args
    	 */
    	public static Connection conn;
     
    	public void initConn () {
    		try {
    			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    			String url = "jdbc:sqlserver://localhost;user=olivier;password=pw";
    			System.out.println(url);
    			conn = DriverManager.getConnection(url);
    			DatabaseMetaData metaData = conn.getMetaData();
    			System.out.println(metaData.getDatabaseProductName());
     
    		} catch (Exception e) {
    			System.err.println("Erreur :" + e);
    		}
    	}
    ...et cela ne marche pas. Lorsque je lance Tomcat, la console indique:

    Erreur :java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
    Y a t-il une erreur dans la déclaration du servlet?

    Merci,

    lolveley.

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Il te faut mettre le driver de sql server dans common/lib de ton dossier d install de Tomcat

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    Merci pour votre réponse,

    j'ai procédé au changement et lorsque je lance Tomcat, aucun mesage d'erreur ne s'affiche.
    Mais quand j'ouvre un navigateur sur la page de mon appli, Tomcat emet le message:

    Erreur :com.microsoft.sqlserver.jdbc.SQLServerException: Échec de la connexion TCP/IP à l'hôte . java.net.ConnectException: Connection refused: connect
    J'ai désactivé mon firewall(zoneAlarm), mais il reste le firewall de ma liveBox...
    Cela vient-il de là?

    Je posterai un nouveau message lorsque j'aurais testé la liveBox...

    lolveley.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    Me revoilà!

    J'ai testé la LiveBox: autorisation pour le programme "SQL Server" (il fallait bien mettre quelque chose) sur le port 8080, en TCP et UDP, mais il y a toujours une erreur...

    lolveley.

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Je connais pas bien sql server, alors a ce niveau la je peux pas trop t aider.
    Question bete :Ton serveur est demarre, je suppose ?

    Par contre si tu utilise Eclipse et que tu as le plugin QuantumDB(ou tout autre de base de donnees), tu peux essayer de te connecter a la base de donnees a titre de test.

    Sinon verifie que tes valeurs pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String url="jdbc:sqlserver://localhost;user=olivier;password=pw";
    Ps : Si tu n as pas absolument besoin de SqlServer et que celui-ci te pose des problemes, tu as Hsqldb ou encore mysql qui sont bien foutus et en general ne posent pas trop de problemes

  6. #6
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    CA MARCHE!

    J'ai bidouillé SQL Server et j'ai reussi à faire marcher l'ensemble!
    J'ai lancé SQL Server configuration manager, et là j'ai modifié les protocoles: tous activés sauf VIA, et j'ai lancé tous les services sauf le browser.

    Bon, ben maintenant je dois déboguer les erreurs suivantes

    Merci,

    lolveley.

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

Discussions similaires

  1. message d'erreur problème d'accés aux données.
    Par manu7607 dans le forum Développement Sharepoint
    Réponses: 0
    Dernier message: 23/09/2009, 09h46
  2. [MVC] Problème d'accés aux données d'un formulaire
    Par reeda dans le forum Spring Web
    Réponses: 1
    Dernier message: 19/01/2009, 15h05
  3. Problème d'acces aux données d'une liste Chainée
    Par Le Payton dans le forum Langage
    Réponses: 4
    Dernier message: 27/08/2007, 11h00
  4. Problème d'accès aux données
    Par phinks94 dans le forum VBA Access
    Réponses: 2
    Dernier message: 22/06/2007, 11h40
  5. problème d'accès aux données sur serveur par poste client
    Par rahan_dave dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/02/2006, 09h13

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