begin process at 2010 02 10 06:41:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Au secours

 > 

Problème SQL et access


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème SQL et access

jeudi 22 avril 2004 à 15:39:12 | Problème SQL et access

mdelph

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.

Merci pour l'aide




mdelph
jeudi 22 avril 2004 à 15:54:09 | Re : Problème SQL et access

HFanny

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

Fanny
jeudi 22 avril 2004 à 16:58:39 | Re : Problème SQL et access

mdelph

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;
}
}
*************************************************

package Projet.Sources;
import java.sql.*;

class Personnes extends ConnectionBase {

private String nom;
private String prenom;
private String adresse;
private String cp;
private String ville;
private float nbheure;
private float salair;
private String tel;
private String commentaire;

//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);

//afichage des données
for(i = 0;i<lg;i++) {
for(j=0;j<col;j++) {
if (enreg[i][j]==null)
{ Clavier.aff(nomcol[j] +": ");
Clavier.aff("");
}
else
{ Clavier.aff(nomcol[j] +":" );
Clavier.aff("\t"+enreg[i][j]);
}
}
Clavier.aff("______________________________________________________");
Clavier.aff("");
}

ConnectionFin(); //arrêt de la connexion à la base
}
}
**************************************************

package Projet.Sources;

import java.io.*;
import java.util.*;
import java.lang.*;

public class Accueil {

static String nom,prenom,adresse,cp,ville,tel,commentaire;
static float salair,nbheure;

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
jeudi 22 avril 2004 à 16:59:19 | Re : Problème SQL et access

mdelph

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;
}
}
*************************************************

package Projet.Sources;
import java.sql.*;

class Personnes extends ConnectionBase {

private String nom;
private String prenom;
private String adresse;
private String cp;
private String ville;
private float nbheure;
private float salair;
private String tel;
private String commentaire;

//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);

//afichage des données
for(i = 0;i<lg;i++) {
for(j=0;j<col;j++) {
if (enreg[i][j]==null)
{ Clavier.aff(nomcol[j] +": ");
Clavier.aff("");
}
else
{ Clavier.aff(nomcol[j] +":" );
Clavier.aff("\t"+enreg[i][j]);
}
}
Clavier.aff("______________________________________________________");
Clavier.aff("");
}

ConnectionFin(); //arrêt de la connexion à la base
}
}
**************************************************

package Projet.Sources;

import java.io.*;
import java.util.*;
import java.lang.*;

public class Accueil {

static String nom,prenom,adresse,cp,ville,tel,commentaire;
static float salair,nbheure;

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
jeudi 22 avril 2004 à 17:11:00 | Re : Problème SQL et access

JBAware


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.

jeudi 22 avril 2004 à 17:20:48 | Re : Problème SQL et access

mdelph

like ' me*' correspond à like 'me%' pour access

mdelph
jeudi 22 avril 2004 à 17:37:05 | Re : Problème SQL et access

JBAware


JB@WAre

hein hein mais il n'empèche que ta condition ne coincide avec rien. essaie sans ce caractère '*' pour voir.

jeudi 22 avril 2004 à 17:43:07 | Re : Problème SQL et access

mdelph

idem, si je fait WHERE Champ = condition, c'est exactement pareil, idem pour un SELECT max()......


mdelph
jeudi 22 avril 2004 à 19:35:48 | Re : Problème SQL et access

JBAware


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

jeudi 22 avril 2004 à 19:41:23 | Re : Problème SQL et access

mdelph

bien sûr il faut select ....from....where


mdelph

1 2

Cette discussion est classée dans : problème, access, table, sql, select


Répondre à ce message

Sujets en rapport avec ce message

problème de jointure de table avec Access [ par eio ] BonjourJ'ai une requête SQL qui va chercher les informations dans une base de données Access. Le problème est que j'ai une jointure qui doit être opti access sql string [ par cid019 ] bonjour,voila j'ai un probleme, disons de comparaison...je souhaite teste si une chaine 'appartient' a une autre.Par exemple 'Moselle' a deja ete sais Cmt porter une table Access sur CD [ par juflata ] J' ai ecrit mon application sur ma machine en Java en utilisant une base de données Access. Elle marche relativement bien. Je veux transporter cette a probleme executeQuery [ par elfourbos ] Bonjour a tous trés cher amis développeurvoila bien comme d'habitude j'arrive avec un problème mais j'ai pu apporter des solutions a d'autres problème PB SQL ou INTERBASE [ par ch0upette ] Bonsoir,Voilà : mon programme java me permet de me connecter à une interbase.Les requêtes simples s'effectuent sans soucis.Mais lorsque j'effectue une generer requete sql a partir d une jtable [ par benohite ] bonjour,j affiche une table (d une base de donnee) dans une jtable au moyen d un resultset (apres requete select *....) passée a un model de tablejusq Transfert AS/400 SQL server 2000 [ par papayou42 ] Bonjour tout le monde, J'ai actuellement une base de données sur un AS/400.Mon probleme est que je voudrais prendre une table et transferer ses donné Transfert AS/400 SQL server 2000 [ par papayou42 ] Bonjour tout le monde,J'ai actuellement une base de données sur un AS/400.Mon probleme est que je voudrais prendre une table et transferer ses données ResultSet [ par mdelph ] Je débute dans le monde de l'informatique, et donc java.Le contexte : une base de données sous access, la connexion passe sans problème pour des requê Problème de récupération des caractères dans base SQL SERVER [ par kimo1907 ] Bonjour, J'ai un problème pour récupérer correctement quelques caractères polonais dans une base sql server 2000, pourtant le stockage se fait en Unic


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales