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
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.
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??

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
Partager