Bonjour,

je bosse sur un tp de gestion de machine.
J'ai fait toute la partie métier.
Maintenant j'attaque la partie connexion à la base.
Pour cela je défini une interface

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
package baseDeDonnees;
import java.sql.Connection;
import java.sql.ResultSet;
 
public interface AccesBaseDeDonnees {
	public ResultSet lireDB(String rqtSQL);
	public void ecrire(String SQL);
	public void connecter();
	public void deconnecter();
}
Dans la partie métier je souhaite lire des données dans la base
mais je n'ai pas acces à la méthode lire(String rqtSQL). J'obtiens une erreur de compilation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ResultSet rst=AccesBaseDeDonnees.lireDB("Select * From Marque");
Eclipse me demande de modifier lireDB en static alors que dans l'interface il n'est autorisé que des public et/ou abstract.
Vu que je ne sais pas comment sera implémenté AccesBaseDeDonnees,je pense qu'il est obligatoire de passer par l'interface pour accéder à la base de données.

Donc pouvez-vous me dire ce que j'ai manqué?

j'ai déjà créé une classe qui implémente accesBaseDeDonnees mais les méthodes sont vide, et cela ne résout en rien mon problème.

Autre question:
J'ai créer une classe BaseDeDonnées qui définit la base à "attaquer" et l'utilisateur. Elle se trouvee du coté métier, mais je me demande si elle ne devrait pas se trouver "de l'autre coté" vu quelle définit aussi le jdbc à utiliser pour attaquer la base.
Je suppose que soit l'interface, soit la classe qui implémente l'interface doit étendre baseDeDonnees. je me trompe??

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
package baseDeDonnees;
 
public class BaseDeDonnees {
	private String host=new String();
	private String port=new String();
	private String nomBase = new String();
	private String url=new String();
	private Utilisateur user;
	/**
         * @param host
         * @param port
         * @param nomBase
         * @param user
         */
	public BaseDeDonnees(String host, String port, String nomBase,
			Utilisateur user) {
		this.host = host;
		this.port = port;
		this.nomBase = nomBase;
		this.user = user;
		init();
	}
 
	public BaseDeDonnees(String host, String port, String nomBase,
			String nomUtilisateur, String password) {
		this.host = host;
		this.port = port;
		this.nomBase = nomBase;
		this.user = new Utilisateur(nomUtilisateur,password);
		init();
	}
	/**
         * @equivaut à un setUrl mais avec les données de l'objet host,port et nom de la base;
         */
	private void init(){
		this.url = "jdbc:oracle:thin:@" + this.host + ":" + this.port+ ":" + this.nomBase;
	}
	/**
         * @return the host
         */
	public String getHost() {
		return host;
	}
	/**
         * @param host the host to set
         */
	public void setHost(String host) {
		this.host = host;
	}
	/**
         * @return the port
         */
	public String getPort() {
		return port;
	}
	/**
         * @param port the port to set
         */
	public void setPort(String port) {
		this.port = port;
	}
	/**
         * @return the nomBase
         */
	public String getNomBase() {
		return nomBase;
	}
	/**
         * @param nomBase the nomBase to set
         */
	public void setNomBase(String nomBase) {
		this.nomBase = nomBase;
	}
	/**
         * @return the user
         */
	public Utilisateur getUser() {
		return user;
	}
	/**
         * @param user the user to set
         */
	public void setUser(Utilisateur user) {
		this.user = user;
	}
	/**
         * @return the url
         */
	public String getUrl() {
		return url;
	}
 
}


Merci d'avance