mdelph
Messages postés13Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention23 novembre 2009
-
22 avril 2004 à 15:39
cs_tds
Messages postés351Date d'inscriptionmercredi 21 janvier 2004StatutMembreDernière intervention 9 décembre 2004
-
27 avril 2004 à 12:31
J'ai un souci avec SQL et access. J'ai une connexion odbc, qui fonctionne, je peut faire SELECT * FROM Table, ça passe sans aucun problème je récupère tous les enregistrements. Mais si je fais SELECT * FROM Table WHERE Champs = Condition, je n'ai plus aucun enregistrement, alors que la table est renseignée, la requête est bonne et doit renvoyer des données. Je passe par un rs = st.excuteQuery(req), pour excuter et récupérer le résultat.
HFanny
Messages postés699Date d'inscriptionmercredi 19 février 2003StatutMembreDernière intervention13 mai 201120 22 avril 2004 à 15:54
Ecris nous ton code.
Peut etre as-tu fait une erreur de syntaxe dans ta requête SQL, comme par exemple oublié de mettre des cotes pour entourer une chaine de caractères (erreur que l'on retrouve fréquemment).
Est-ce juste ton resultset qui est vide ou alors ta requete qui ne passe pas ?
(si tu fais un try catch, quel est le message d'erreur s'il y en a un?)
mdelph
Messages postés13Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention23 novembre 2009 22 avril 2004 à 16:58
Voilà près de l'intégralité de mon code, 3 classes, une classe connexion, une classe personne qui hérite de connexion, et la classe accueil qui lance le prog.
package Projet.Sources;
import java.sql.*;
import java.io.*;
public class ConnectionBase {
//chaîne de connection au lien odbc
private String url = "jdbc:odbc:GestionDuPersonnel";
//connexion initialisation
private Connection con = null;
//création d'une variable statement employé pour exécuter des requêtes SQL et obtenir les résultats
private Statement statem ;
//exécute la requête passée en paramètre et récupère le résultat
private ResultSet resultat ;
//
private ResultSetMetaData metadata;
//constructeur
//connexion à la base de donées
public void ConnectionBase(){
try {
//déclaration de la classe
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// création et configuration d'une variable connexion url,user et pass
con = DriverManager.getConnection(url,"","");
Clavier.aff("connect");
}
catch (SQLException ex){
Clavier.aff ("Source non trouvée, connection impossible." );
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
catch (java.lang.Exception ex){
ex.printStackTrace();
}
}
//fermeture de la connexion à la base
public void ConnectionFin(){
try {
resultat.close();
statem.close();
con.close();
}
catch (SQLException ex){
Clavier.aff ("Impossible de fermer la connexion à la base" );
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
catch (java.lang.Exception ex){
ex.printStackTrace();
Clavier.aff ("Impossible de fermer la connexion");
}
}
//exécution d'une requête SQL de recherche
public ResultSet RequeteSQLRech(String req){
try {
//initialisation de la variable pour exécuter la requête,option pour pouvoi se déplacer
statem = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
//exécution de la requête et recupération des données
resultat = statem.executeQuery(req);
}
catch (SQLException ex){
Clavier.aff ("Impossible d'exécuter la requête n°1. " );
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
catch (java.lang.Exception ex){
ex.printStackTrace();
Clavier.aff ("Impossible d'exécuter la requête");
}
return resultat;
}
//exécution d'une requête SQL de nise à jour
public ResultSet RequeteSQLUpdate(String req){
try {
//initialisation de la variable pour exécuter la requête
statem = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
//exécution de la requête et recupération des données
statem.execute(req);
resultat = statem.getResultSet();
}
catch (SQLException ex){
Clavier.aff ("Impossible d'exécuter la requête n°2. "+ ex.getMessage());
}
catch (java.lang.Exception ex){
ex.printStackTrace();
Clavier.aff ("Impossible d'exécuter la requête");
}
return resultat;
}
//renvoit le nombre d'enregistrement en fonction de la requete
public int nbEnregistrement(ResultSet r){
int i =0;
try{
r.absolute(1); //pointe sur le 1er enregistrement
while(r.next()) { i++; }
r.absolute(1); // replacement du pointeur
}
catch(SQLException ex){
Clavier.aff("Impossible de renvoyer le nombre d'enregistrement ");
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
// i=i+1; // +1 départ de 0
return i;
}
//renvoit le nombre de colonnes
public int nbColonne(ResultSet r){
int i =0;
ResultSetMetaData metadata;
try{
metadata = r.getMetaData();
i = metadata.getColumnCount();
}
catch(SQLException ex){
Clavier.aff("Impossible de renvoyer le nombre de colonnes ");
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
return i;
}
//renvoit les enregistrements
public String[][] Enregistrement(ResultSet r){
int nbcol,i,j,nbenreg =0;
String[][] enreg = null; //tableau des enregistrements
try{
nbcol = nbColonne(r); //recupétarion du nombre de colonnes
nbenreg = nbEnregistrement(r); //recupération du nombre d'enregistrements
enreg = new String[nbenreg][nbcol]; //instance du tableau d'enregistrement
//récupération des données dans le tableau
// Clavier.aff(nbenreg);
// Clavier.aff(nbcol);
for (i=0; i<nbenreg; i++)
{
for (j=0; j<nbcol; j++)
{
enreg[i][j] = r.getString(j+1);
// Clavier.aff(enreg[i][j]);
}
r.next(); //passage à l'enregistrement suivant
}
}
catch(SQLException ex){
Clavier.aff("Impossible de récupérer les enregistrements ");
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
return enreg;
}
//recupération des entêtes de colonnes
public String[] nomColonne (ResultSet r){
int i =0;
String[] nomcol =null;
ResultSetMetaData metadata;
nomcol = new String[nbColonne(r)];
try{
metadata = r.getMetaData();
for(i=0; i<nbColonne(r);i++)
{
nomcol[i] = metadata.getColumnName(i+1);
}
}
catch(SQLException ex){
Clavier.aff("Impossible de renvoyer le nom des colonnes ");
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
return nomcol;
}
}
*************************************************
//constructeur de la classe personne
//renvoit le requête de la liste des personnes
public String ListePersonnes(){
String req;
req = "Select Pers_UID as IDENTIFIANT,Pers_NOM as NOM,Pers_PRENOM as PRENOM,Pers_ADRESSE as ADRESSE,Pers_CP as CP,Pers_VILLE as VILLE, Pers_NBHEURE as HEURES,Pers_SALAIR as SALAIR,Pers_TEL as TELEPHONE,Pers_COMMENTAIRE as COMMENTAIRE from Personnes";
return req;
}
//renvoit le requête de la recherche par nom
public String RecherchePersonnes(String s){
String req;
req = "SELECT Pers_UID as IDENTIFIANT,Pers_NOM as NOM,Pers_PRENOM as PRENOM,Pers_ADRESSE as ADRESSE,Pers_CP as CP,Pers_VILLE as VILLE, Pers_NBHEURE as HEURES,Pers_SALAIR as SALAIR,Pers_TEL as TELEPHONE,Pers_COMMENTAIRE as COMMENTAIRE FROM Personnes WHERE Pers_NOM LIKE '"+s+"*';";
Clavier.aff(req);
return req;
}
//recherche d'un enregistrement par rapport au nom
public void AffPersonnes (String req){
ResultSet result;
int lg,col,i,j =0;
String [][] enreg;
String [] nomcol;
ConnectionBase();//connexion à la base
result = RequeteSQLRech(req); //résultat de la requête
col = nbColonne(result); //récupération du nbre de colonnes
lg = nbEnregistrement(result); //récupération du nbre d'enregistrement
Clavier.aff("rechpers lg :"+lg+" col :"+col);
enreg = new String[lg][col]; //instance du tableau
nomcol = new String[col]; //instance du tableau des nom de colonne
enreg = Enregistrement(result);//récupération du tableau d'enregistrement
nomcol = nomColonne(result);
public static void main (String args[])
throws java.io.IOException {
int choix;
int i;
Personnes pers = new Personnes(); //variable de type Personnes et création
do {
AfficheMenu();
choix = Clavier.lireI();
switch(choix){
case 1 : pers.AffPersonnes(pers.ListePersonnes());
break;
case 2 : Clavier.aff("Nom a recherché : ");
nom = Clavier.lireS();
pers.AffPersonnes(pers.RecherchePersonnes(nom));
break;
}
} while (choix!=0);
}
//procédure d'affichage du menu
public static void AfficheMenu () {
Clavier.aff ("\n *** Menu *** \n");
Clavier.aff ("1 - Visualiser la liste des employés");
Clavier.aff ("2 - Rechercher un employés par son nom");
Clavier.aff ("0 - Fin");
Clavier.aff ("\n Quel est votre choix ? ");
}
}
**************************************************
Voilà si qq1 a une idée, se serait sympas
Merci
mdelph
Messages postés13Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention23 novembre 2009 22 avril 2004 à 16:59
Voilà près de l'intégralité de mon code, 3 classes, une classe connexion, une classe personne qui hérite de connexion, et la classe accueil qui lance le prog.
package Projet.Sources;
import java.sql.*;
import java.io.*;
public class ConnectionBase {
//chaîne de connection au lien odbc
private String url = "jdbc:odbc:GestionDuPersonnel";
//connexion initialisation
private Connection con = null;
//création d'une variable statement employé pour exécuter des requêtes SQL et obtenir les résultats
private Statement statem ;
//exécute la requête passée en paramètre et récupère le résultat
private ResultSet resultat ;
//
private ResultSetMetaData metadata;
//constructeur
//connexion à la base de donées
public void ConnectionBase(){
try {
//déclaration de la classe
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// création et configuration d'une variable connexion url,user et pass
con = DriverManager.getConnection(url,"","");
Clavier.aff("connect");
}
catch (SQLException ex){
Clavier.aff ("Source non trouvée, connection impossible." );
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
catch (java.lang.Exception ex){
ex.printStackTrace();
}
}
//fermeture de la connexion à la base
public void ConnectionFin(){
try {
resultat.close();
statem.close();
con.close();
}
catch (SQLException ex){
Clavier.aff ("Impossible de fermer la connexion à la base" );
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
catch (java.lang.Exception ex){
ex.printStackTrace();
Clavier.aff ("Impossible de fermer la connexion");
}
}
//exécution d'une requête SQL de recherche
public ResultSet RequeteSQLRech(String req){
try {
//initialisation de la variable pour exécuter la requête,option pour pouvoi se déplacer
statem = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
//exécution de la requête et recupération des données
resultat = statem.executeQuery(req);
}
catch (SQLException ex){
Clavier.aff ("Impossible d'exécuter la requête n°1. " );
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
catch (java.lang.Exception ex){
ex.printStackTrace();
Clavier.aff ("Impossible d'exécuter la requête");
}
return resultat;
}
//exécution d'une requête SQL de nise à jour
public ResultSet RequeteSQLUpdate(String req){
try {
//initialisation de la variable pour exécuter la requête
statem = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
//exécution de la requête et recupération des données
statem.execute(req);
resultat = statem.getResultSet();
}
catch (SQLException ex){
Clavier.aff ("Impossible d'exécuter la requête n°2. "+ ex.getMessage());
}
catch (java.lang.Exception ex){
ex.printStackTrace();
Clavier.aff ("Impossible d'exécuter la requête");
}
return resultat;
}
//renvoit le nombre d'enregistrement en fonction de la requete
public int nbEnregistrement(ResultSet r){
int i =0;
try{
r.absolute(1); //pointe sur le 1er enregistrement
while(r.next()) { i++; }
r.absolute(1); // replacement du pointeur
}
catch(SQLException ex){
Clavier.aff("Impossible de renvoyer le nombre d'enregistrement ");
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
// i=i+1; // +1 départ de 0
return i;
}
//renvoit le nombre de colonnes
public int nbColonne(ResultSet r){
int i =0;
ResultSetMetaData metadata;
try{
metadata = r.getMetaData();
i = metadata.getColumnCount();
}
catch(SQLException ex){
Clavier.aff("Impossible de renvoyer le nombre de colonnes ");
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
return i;
}
//renvoit les enregistrements
public String[][] Enregistrement(ResultSet r){
int nbcol,i,j,nbenreg =0;
String[][] enreg = null; //tableau des enregistrements
try{
nbcol = nbColonne(r); //recupétarion du nombre de colonnes
nbenreg = nbEnregistrement(r); //recupération du nombre d'enregistrements
enreg = new String[nbenreg][nbcol]; //instance du tableau d'enregistrement
//récupération des données dans le tableau
// Clavier.aff(nbenreg);
// Clavier.aff(nbcol);
for (i=0; i<nbenreg; i++)
{
for (j=0; j<nbcol; j++)
{
enreg[i][j] = r.getString(j+1);
// Clavier.aff(enreg[i][j]);
}
r.next(); //passage à l'enregistrement suivant
}
}
catch(SQLException ex){
Clavier.aff("Impossible de récupérer les enregistrements ");
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
return enreg;
}
//recupération des entêtes de colonnes
public String[] nomColonne (ResultSet r){
int i =0;
String[] nomcol =null;
ResultSetMetaData metadata;
nomcol = new String[nbColonne(r)];
try{
metadata = r.getMetaData();
for(i=0; i<nbColonne(r);i++)
{
nomcol[i] = metadata.getColumnName(i+1);
}
}
catch(SQLException ex){
Clavier.aff("Impossible de renvoyer le nom des colonnes ");
Clavier.aff(ex.getErrorCode() + ex.getMessage());
}
return nomcol;
}
}
*************************************************
//constructeur de la classe personne
//renvoit le requête de la liste des personnes
public String ListePersonnes(){
String req;
req = "Select Pers_UID as IDENTIFIANT,Pers_NOM as NOM,Pers_PRENOM as PRENOM,Pers_ADRESSE as ADRESSE,Pers_CP as CP,Pers_VILLE as VILLE, Pers_NBHEURE as HEURES,Pers_SALAIR as SALAIR,Pers_TEL as TELEPHONE,Pers_COMMENTAIRE as COMMENTAIRE from Personnes";
return req;
}
//renvoit le requête de la recherche par nom
public String RecherchePersonnes(String s){
String req;
req = "SELECT Pers_UID as IDENTIFIANT,Pers_NOM as NOM,Pers_PRENOM as PRENOM,Pers_ADRESSE as ADRESSE,Pers_CP as CP,Pers_VILLE as VILLE, Pers_NBHEURE as HEURES,Pers_SALAIR as SALAIR,Pers_TEL as TELEPHONE,Pers_COMMENTAIRE as COMMENTAIRE FROM Personnes WHERE Pers_NOM LIKE '"+s+"*';";
Clavier.aff(req);
return req;
}
//recherche d'un enregistrement par rapport au nom
public void AffPersonnes (String req){
ResultSet result;
int lg,col,i,j =0;
String [][] enreg;
String [] nomcol;
ConnectionBase();//connexion à la base
result = RequeteSQLRech(req); //résultat de la requête
col = nbColonne(result); //récupération du nbre de colonnes
lg = nbEnregistrement(result); //récupération du nbre d'enregistrement
Clavier.aff("rechpers lg :"+lg+" col :"+col);
enreg = new String[lg][col]; //instance du tableau
nomcol = new String[col]; //instance du tableau des nom de colonne
enreg = Enregistrement(result);//récupération du tableau d'enregistrement
nomcol = nomColonne(result);
public static void main (String args[])
throws java.io.IOException {
int choix;
int i;
Personnes pers = new Personnes(); //variable de type Personnes et création
do {
AfficheMenu();
choix = Clavier.lireI();
switch(choix){
case 1 : pers.AffPersonnes(pers.ListePersonnes());
break;
case 2 : Clavier.aff("Nom a recherché : ");
nom = Clavier.lireS();
pers.AffPersonnes(pers.RecherchePersonnes(nom));
break;
}
} while (choix!=0);
}
//procédure d'affichage du menu
public static void AfficheMenu () {
Clavier.aff ("\n *** Menu *** \n");
Clavier.aff ("1 - Visualiser la liste des employés");
Clavier.aff ("2 - Rechercher un employés par son nom");
Clavier.aff ("0 - Fin");
Clavier.aff ("\n Quel est votre choix ? ");
}
}
**************************************************
Voilà si qq1 a une idée, se serait sympas
Merci
JBAware
Messages postés174Date d'inscriptionlundi 23 septembre 2002StatutMembreDernière intervention 6 avril 20111 22 avril 2004 à 17:11
8-) JB@WAre
req = "SELECT Pers_UID as IDENTIFIANT,Pers_NOM as NOM,Pers_PRENOM as PRENOM,Pers_ADRESSE as ADRESSE,Pers_CP as CP,Pers_VILLE as VILLE, Pers_NBHEURE as HEURES,Pers_SALAIR as SALAIR,Pers_TEL as TELEPHONE,Pers_COMMENTAIRE as COMMENTAIRE FROM Personnes WHERE Pers_NOM LIKE '"+s+"*';";
Il me semble que le charactère '*' n'a pas la même signification dans access que dans un autre sgbd.
Vous n’avez pas trouvé la réponse que vous recherchez ?
JBAware
Messages postés174Date d'inscriptionlundi 23 septembre 2002StatutMembreDernière intervention 6 avril 20111 22 avril 2004 à 19:35
8-) JB@WAre
euh j'avais pas fait gaffe et j'ai du mal a croire que ca marche. avec un driver ODBC sur une base access, il me semblait que les nom des tables devaient êtres précisées comme ceci : Select .... FROM [NomDeLaTable] Where ...
mdelph
Messages postés13Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention23 novembre 2009 23 avril 2004 à 03:33
malgrés l'heure tardive, j'avais compris,mais tu peux mettre les crochets où tu veux c'est toujours pareil, parfois il ne met même pas d'erreur... java ça me désespère