begin process at 2012 05 29 06:30:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Base de données

 > 

Est-ce la meilleure méthode ?


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

Est-ce la meilleure méthode ?

mardi 19 novembre 2002 à 23:49:29 | Est-ce la meilleure méthode ?

jeromedeparis13

Bonjour,

J'utilise Visual C++ et Access 97 pour une application . J'ai besoin de me connecter à la BD (Access 97 qui compte une dizaine de tables) afin que je puisse récupérer des informations.

Dans ma fonction, j'ai besoin de faire des accès à la BD et d'effectuer une quinzaine de requêtes (tous plus ou moins longues).

Bref, mon collègue m'a donné un exemple de code ou je peux effectuer une connexion (via ODBC), interroger les tables , récupérer le résultat et stocker les enregistrement dans des tableaux.

Mon application a besoin d'interroger environ 1000 fois les quinze requêtes. Afin d'optimiser le temps de réponses (ils sont longs! plusieurs minutes), je souhaiterais avoir votre avis.

Mes question sont les suivantes :

Est-ce que le fait de récupérer le résultat de mes enregistrements et les stocker dans un tableau est la meilleur solution ?

Est-ce que la solution ODBC est la plus rapide ?
(Si non pouvez me donner un exemple de codes.)

Merci de votre aide!

Jérôme
----

CDatabase db;

CString DsnName = "";
CString dbconnection = "ODBC;DSN=MS Access 97 Database;";

CString nom_champ, taille_champ, bit_deb_champ;

CString Chaine_bits ="";
CString Chaine_bits_champ ="";


CArray<int,int> Taille_Message;
CArray<CString,CString> Nom_Message;

db.Open( DsnName, false, false, dbconnection);

// --- Exécution de la requête
CRecordset rs(&db);

// Ouverture du recordset
rs.Open(CRecordset::forwardOnly, _T("Select NOM_CHAMP, TAILLE_CHAMP, BIT_DEB_CHAMP from CHAMP"));
// Parcours des enregistrements contenus dans le recordset contenant les réponses
str = "";

while( !rs.IsEOF())
{
// --- Récupération des valeurs des colonnes de l'enregistrement

rs.GetFieldValue("NOM_CHAMP", nom_champ);
rs.GetFieldValue("TAILLE_CHAMP", taille_champ);
rs.GetFieldValue("BIT_DEB_CHAMP", bit_deb_champ);
// --Récupération dans un tableau de la taille et du nom
Taille_Message.Add(atoi(taille_champ));
Nom_Message.Add(nom_champ);
rs.MoveNext( );
}
// Fermeture du recordset
rs.Close();
mercredi 20 novembre 2002 à 11:32:40 | Re : Est-ce la meilleure méthode ?

Kaid



- L'accès aux bases via ODBC n'est pas le plus rapide. La meilleure solution est d'utiliser un accès natif à la base (une API propre à chaque base de données).

- Que fais-tu avec les enregistrements que tu récupéres de la base ? Affichage ? Calculs ?

- Enfin, Access est t'il adapaté à ton volume de données ? Ne voudrait t'il pas mieux utiliser une vraie base de données (gérant accès natif et curseurs) comme MySQL ou encore plus vraie comme Oracle ?

-------------------------------
Réponse au message :
-------------------------------

Bonjour,

J'utilise Visual C++ et Access 97 pour une application . J'ai besoin de me connecter à la BD (Access 97 qui compte une dizaine de tables) afin que je puisse récupérer des informations.

Dans ma fonction, j'ai besoin de faire des accès à la BD et d'effectuer une quinzaine de requêtes (tous plus ou moins longues).

Bref, mon collègue m'a donné un exemple de code ou je peux effectuer une connexion (via ODBC), interroger les tables , récupérer le résultat et stocker les enregistrement dans des tableaux.

Mon application a besoin d'interroger environ 1000 fois les quinze requêtes. Afin d'optimiser le temps de réponses (ils sont longs! plusieurs minutes), je souhaiterais avoir votre avis.

Mes question sont les suivantes :

Est-ce que le fait de récupérer le résultat de mes enregistrements et les stocker dans un tableau est la meilleur solution ?

Est-ce que la solution ODBC est la plus rapide ?
(Si non pouvez me donner un exemple de codes.)

Merci de votre aide!

Jérôme
----

CDatabase db;

CString DsnName = "";
CString dbconnection = "ODBC;DSN=MS Access 97 Database;";

CString nom_champ, taille_champ, bit_deb_champ;

CString Chaine_bits ="";
CString Chaine_bits_champ ="";


CArray<int,int> Taille_Message;
CArray<CString,CString> Nom_Message;

db.Open( DsnName, false, false, dbconnection);

// --- Exécution de la requête
CRecordset rs(&db);

// Ouverture du recordset
rs.Open(CRecordset::forwardOnly, _T("Select NOM_CHAMP, TAILLE_CHAMP, BIT_DEB_CHAMP from CHAMP"));
// Parcours des enregistrements contenus dans le recordset contenant les réponses
str = "";

while( !rs.IsEOF())
{
// --- Récupération des valeurs des colonnes de l'enregistrement

rs.GetFieldValue("NOM_CHAMP", nom_champ);
rs.GetFieldValue("TAILLE_CHAMP", taille_champ);
rs.GetFieldValue("BIT_DEB_CHAMP", bit_deb_champ);
// --Récupération dans un tableau de la taille et du nom
Taille_Message.Add(atoi(taille_champ));
Nom_Message.Add(nom_champ);
rs.MoveNext( );
}
// Fermeture du recordset
rs.Close();
jeudi 21 novembre 2002 à 11:27:47 | Re : Est-ce la meilleure méthode ?

jeromedeparis13

Je te remercie bcp de ta réponse.

A la lecture de tes conseils, j'ai plusieurs questions :

Comment faut-il faire pour se procurer l'API Access 97 ?
Ou est-ce qu'on peut l'avoir ?


Concernant les enregistrements je vais faire des comparaisons avec un fichier en entrée et j'écris le résultat de mes comparaisons dans un fichier.

En gros je lis un fichier d'entrée qui contient plein de chiffres en binaire.
Je les transforme et je les compare avec ma BD Access.

(Ma BD comporte env 15 tables qui vont avoir 5000 enregistrements en moyenne par table.)

Puis j'ecris le résultat dans un fichier texte.


-------------------------------
Réponse au message :
-------------------------------



- L'accès aux bases via ODBC n'est pas le plus rapide. La meilleure solution est d'utiliser un accès natif à la base (une API propre à chaque base de données).

- Que fais-tu avec les enregistrements que tu récupéres de la base ? Affichage ? Calculs ?

- Enfin, Access est t'il adapaté à ton volume de données ? Ne voudrait t'il pas mieux utiliser une vraie base de données (gérant accès natif et curseurs) comme MySQL ou encore plus vraie comme Oracle ?

-------------------------------
Réponse au message :
-------------------------------

Bonjour,

J'utilise Visual C++ et Access 97 pour une application . J'ai besoin de me connecter à la BD (Access 97 qui compte une dizaine de tables) afin que je puisse récupérer des informations.

Dans ma fonction, j'ai besoin de faire des accès à la BD et d'effectuer une quinzaine de requêtes (tous plus ou moins longues).

Bref, mon collègue m'a donné un exemple de code ou je peux effectuer une connexion (via ODBC), interroger les tables , récupérer le résultat et stocker les enregistrement dans des tableaux.

Mon application a besoin d'interroger environ 1000 fois les quinze requêtes. Afin d'optimiser le temps de réponses (ils sont longs! plusieurs minutes), je souhaiterais avoir votre avis.

Mes question sont les suivantes :

Est-ce que le fait de récupérer le résultat de mes enregistrements et les stocker dans un tableau est la meilleur solution ?

Est-ce que la solution ODBC est la plus rapide ?
(Si non pouvez me donner un exemple de codes.)

Merci de votre aide!

Jérôme
----

CDatabase db;

CString DsnName = "";
CString dbconnection = "ODBC;DSN=MS Access 97 Database;";

CString nom_champ, taille_champ, bit_deb_champ;

CString Chaine_bits ="";
CString Chaine_bits_champ ="";


CArray<int,int> Taille_Message;
CArray<CString,CString> Nom_Message;

db.Open( DsnName, false, false, dbconnection);

// --- Exécution de la requête
CRecordset rs(&db);

// Ouverture du recordset
rs.Open(CRecordset::forwardOnly, _T("Select NOM_CHAMP, TAILLE_CHAMP, BIT_DEB_CHAMP from CHAMP"));
// Parcours des enregistrements contenus dans le recordset contenant les réponses
str = "";

while( !rs.IsEOF())
{
// --- Récupération des valeurs des colonnes de l'enregistrement

rs.GetFieldValue("NOM_CHAMP", nom_champ);
rs.GetFieldValue("TAILLE_CHAMP", taille_champ);
rs.GetFieldValue("BIT_DEB_CHAMP", bit_deb_champ);
// --Récupération dans un tableau de la taille et du nom
Taille_Message.Add(atoi(taille_champ));
Nom_Message.Add(nom_champ);
rs.MoveNext( );
}
// Fermeture du recordset
rs.Close();

jeudi 21 novembre 2002 à 11:59:03 | Re : Est-ce la meilleure méthode ?

Kaid


En fait, je ne sais pas si on peut accèder à Access en natif. C'est certainement possible mais je ne sais absolument pas comment faire.

Sinon les 75000 enregistrements sont bien supportés par Access ? Ca rame ? Ton fichier .mdb fait combien de méga ?

-------------------------------
Réponse au message :
-------------------------------

Je te remercie bcp de ta réponse.

A la lecture de tes conseils, j'ai plusieurs questions :

Comment faut-il faire pour se procurer l'API Access 97 ?
Ou est-ce qu'on peut l'avoir ?


Concernant les enregistrements je vais faire des comparaisons avec un fichier en entrée et j'écris le résultat de mes comparaisons dans un fichier.

En gros je lis un fichier d'entrée qui contient plein de chiffres en binaire.
Je les transforme et je les compare avec ma BD Access.

(Ma BD comporte env 15 tables qui vont avoir 5000 enregistrements en moyenne par table.)

Puis j'ecris le résultat dans un fichier texte.


-------------------------------
Réponse au message :
-------------------------------



- L'accès aux bases via ODBC n'est pas le plus rapide. La meilleure solution est d'utiliser un accès natif à la base (une API propre à chaque base de données).

- Que fais-tu avec les enregistrements que tu récupéres de la base ? Affichage ? Calculs ?

- Enfin, Access est t'il adapaté à ton volume de données ? Ne voudrait t'il pas mieux utiliser une vraie base de données (gérant accès natif et curseurs) comme MySQL ou encore plus vraie comme Oracle ?

-------------------------------
Réponse au message :
-------------------------------

Bonjour,

J'utilise Visual C++ et Access 97 pour une application . J'ai besoin de me connecter à la BD (Access 97 qui compte une dizaine de tables) afin que je puisse récupérer des informations.

Dans ma fonction, j'ai besoin de faire des accès à la BD et d'effectuer une quinzaine de requêtes (tous plus ou moins longues).

Bref, mon collègue m'a donné un exemple de code ou je peux effectuer une connexion (via ODBC), interroger les tables , récupérer le résultat et stocker les enregistrement dans des tableaux.

Mon application a besoin d'interroger environ 1000 fois les quinze requêtes. Afin d'optimiser le temps de réponses (ils sont longs! plusieurs minutes), je souhaiterais avoir votre avis.

Mes question sont les suivantes :

Est-ce que le fait de récupérer le résultat de mes enregistrements et les stocker dans un tableau est la meilleur solution ?

Est-ce que la solution ODBC est la plus rapide ?
(Si non pouvez me donner un exemple de codes.)

Merci de votre aide!

Jérôme
----

CDatabase db;

CString DsnName = "";
CString dbconnection = "ODBC;DSN=MS Access 97 Database;";

CString nom_champ, taille_champ, bit_deb_champ;

CString Chaine_bits ="";
CString Chaine_bits_champ ="";


CArray<int,int> Taille_Message;
CArray<CString,CString> Nom_Message;

db.Open( DsnName, false, false, dbconnection);

// --- Exécution de la requête
CRecordset rs(&db);

// Ouverture du recordset
rs.Open(CRecordset::forwardOnly, _T("Select NOM_CHAMP, TAILLE_CHAMP, BIT_DEB_CHAMP from CHAMP"));
// Parcours des enregistrements contenus dans le recordset contenant les réponses
str = "";

while( !rs.IsEOF())
{
// --- Récupération des valeurs des colonnes de l'enregistrement

rs.GetFieldValue("NOM_CHAMP", nom_champ);
rs.GetFieldValue("TAILLE_CHAMP", taille_champ);
rs.GetFieldValue("BIT_DEB_CHAMP", bit_deb_champ);
// --Récupération dans un tableau de la taille et du nom
Taille_Message.Add(atoi(taille_champ));
Nom_Message.Add(nom_champ);
rs.MoveNext( );
}
// Fermeture du recordset
rs.Close();


jeudi 21 novembre 2002 à 13:34:07 | Re : Est-ce la meilleure méthode ?

jeromedeparis13


Pour l'instant on a crée quelques enregistrements.
Je vais faire les requêtes et dès que cela fonctionne je te le dirais.

Merci bcp!


-------------------------------
Réponse au message :
-------------------------------


En fait, je ne sais pas si on peut accèder à Access en natif. C'est certainement possible mais je ne sais absolument pas comment faire.

Sinon les 75000 enregistrements sont bien supportés par Access ? Ca rame ? Ton fichier .mdb fait combien de méga ?

-------------------------------
Réponse au message :
-------------------------------

Je te remercie bcp de ta réponse.

A la lecture de tes conseils, j'ai plusieurs questions :

Comment faut-il faire pour se procurer l'API Access 97 ?
Ou est-ce qu'on peut l'avoir ?


Concernant les enregistrements je vais faire des comparaisons avec un fichier en entrée et j'écris le résultat de mes comparaisons dans un fichier.

En gros je lis un fichier d'entrée qui contient plein de chiffres en binaire.
Je les transforme et je les compare avec ma BD Access.

(Ma BD comporte env 15 tables qui vont avoir 5000 enregistrements en moyenne par table.)

Puis j'ecris le résultat dans un fichier texte.


-------------------------------
Réponse au message :
-------------------------------



- L'accès aux bases via ODBC n'est pas le plus rapide. La meilleure solution est d'utiliser un accès natif à la base (une API propre à chaque base de données).

- Que fais-tu avec les enregistrements que tu récupéres de la base ? Affichage ? Calculs ?

- Enfin, Access est t'il adapaté à ton volume de données ? Ne voudrait t'il pas mieux utiliser une vraie base de données (gérant accès natif et curseurs) comme MySQL ou encore plus vraie comme Oracle ?

-------------------------------
Réponse au message :
-------------------------------

Bonjour,

J'utilise Visual C++ et Access 97 pour une application . J'ai besoin de me connecter à la BD (Access 97 qui compte une dizaine de tables) afin que je puisse récupérer des informations.

Dans ma fonction, j'ai besoin de faire des accès à la BD et d'effectuer une quinzaine de requêtes (tous plus ou moins longues).

Bref, mon collègue m'a donné un exemple de code ou je peux effectuer une connexion (via ODBC), interroger les tables , récupérer le résultat et stocker les enregistrement dans des tableaux.

Mon application a besoin d'interroger environ 1000 fois les quinze requêtes. Afin d'optimiser le temps de réponses (ils sont longs! plusieurs minutes), je souhaiterais avoir votre avis.

Mes question sont les suivantes :

Est-ce que le fait de récupérer le résultat de mes enregistrements et les stocker dans un tableau est la meilleur solution ?

Est-ce que la solution ODBC est la plus rapide ?
(Si non pouvez me donner un exemple de codes.)

Merci de votre aide!

Jérôme
----

CDatabase db;

CString DsnName = "";
CString dbconnection = "ODBC;DSN=MS Access 97 Database;";

CString nom_champ, taille_champ, bit_deb_champ;

CString Chaine_bits ="";
CString Chaine_bits_champ ="";


CArray<int,int> Taille_Message;
CArray<CString,CString> Nom_Message;

db.Open( DsnName, false, false, dbconnection);

// --- Exécution de la requête
CRecordset rs(&db);

// Ouverture du recordset
rs.Open(CRecordset::forwardOnly, _T("Select NOM_CHAMP, TAILLE_CHAMP, BIT_DEB_CHAMP from CHAMP"));
// Parcours des enregistrements contenus dans le recordset contenant les réponses
str = "";

while( !rs.IsEOF())
{
// --- Récupération des valeurs des colonnes de l'enregistrement

rs.GetFieldValue("NOM_CHAMP", nom_champ);
rs.GetFieldValue("TAILLE_CHAMP", taille_champ);
rs.GetFieldValue("BIT_DEB_CHAMP", bit_deb_champ);
// --Récupération dans un tableau de la taille et du nom
Taille_Message.Add(atoi(taille_champ));
Nom_Message.Add(nom_champ);
rs.MoveNext( );
}
// Fermeture du recordset
rs.Close();



dimanche 24 novembre 2002 à 22:23:05 | Re : Est-ce la meilleure méthode ?

nEUrOne

C'est obligatoire pour toi de passer par une base ACCESS ?

Romain Gaucher
r_gaucher@hotmail.com


-------------------------------
Réponse au message :
-------------------------------


Pour l'instant on a crée quelques enregistrements.
Je vais faire les requêtes et dès que cela fonctionne je te le dirais.

Merci bcp!


-------------------------------
Réponse au message :
-------------------------------


En fait, je ne sais pas si on peut accèder à Access en natif. C'est certainement possible mais je ne sais absolument pas comment faire.

Sinon les 75000 enregistrements sont bien supportés par Access ? Ca rame ? Ton fichier .mdb fait combien de méga ?

-------------------------------
Réponse au message :
-------------------------------

Je te remercie bcp de ta réponse.

A la lecture de tes conseils, j'ai plusieurs questions :

Comment faut-il faire pour se procurer l'API Access 97 ?
Ou est-ce qu'on peut l'avoir ?


Concernant les enregistrements je vais faire des comparaisons avec un fichier en entrée et j'écris le résultat de mes comparaisons dans un fichier.

En gros je lis un fichier d'entrée qui contient plein de chiffres en binaire.
Je les transforme et je les compare avec ma BD Access.

(Ma BD comporte env 15 tables qui vont avoir 5000 enregistrements en moyenne par table.)

Puis j'ecris le résultat dans un fichier texte.


-------------------------------
Réponse au message :
-------------------------------



- L'accès aux bases via ODBC n'est pas le plus rapide. La meilleure solution est d'utiliser un accès natif à la base (une API propre à chaque base de données).

- Que fais-tu avec les enregistrements que tu récupéres de la base ? Affichage ? Calculs ?

- Enfin, Access est t'il adapaté à ton volume de données ? Ne voudrait t'il pas mieux utiliser une vraie base de données (gérant accès natif et curseurs) comme MySQL ou encore plus vraie comme Oracle ?

-------------------------------
Réponse au message :
-------------------------------

Bonjour,

J'utilise Visual C++ et Access 97 pour une application . J'ai besoin de me connecter à la BD (Access 97 qui compte une dizaine de tables) afin que je puisse récupérer des informations.

Dans ma fonction, j'ai besoin de faire des accès à la BD et d'effectuer une quinzaine de requêtes (tous plus ou moins longues).

Bref, mon collègue m'a donné un exemple de code ou je peux effectuer une connexion (via ODBC), interroger les tables , récupérer le résultat et stocker les enregistrement dans des tableaux.

Mon application a besoin d'interroger environ 1000 fois les quinze requêtes. Afin d'optimiser le temps de réponses (ils sont longs! plusieurs minutes), je souhaiterais avoir votre avis.

Mes question sont les suivantes :

Est-ce que le fait de récupérer le résultat de mes enregistrements et les stocker dans un tableau est la meilleur solution ?

Est-ce que la solution ODBC est la plus rapide ?
(Si non pouvez me donner un exemple de codes.)

Merci de votre aide!

Jérôme
----

CDatabase db;

CString DsnName = "";
CString dbconnection = "ODBC;DSN=MS Access 97 Database;";

CString nom_champ, taille_champ, bit_deb_champ;

CString Chaine_bits ="";
CString Chaine_bits_champ ="";


CArray<int,int> Taille_Message;
CArray<CString,CString> Nom_Message;

db.Open( DsnName, false, false, dbconnection);

// --- Exécution de la requête
CRecordset rs(&db);

// Ouverture du recordset
rs.Open(CRecordset::forwardOnly, _T("Select NOM_CHAMP, TAILLE_CHAMP, BIT_DEB_CHAMP from CHAMP"));
// Parcours des enregistrements contenus dans le recordset contenant les réponses
str = "";

while( !rs.IsEOF())
{
// --- Récupération des valeurs des colonnes de l'enregistrement

rs.GetFieldValue("NOM_CHAMP", nom_champ);
rs.GetFieldValue("TAILLE_CHAMP", taille_champ);
rs.GetFieldValue("BIT_DEB_CHAMP", bit_deb_champ);
// --Récupération dans un tableau de la taille et du nom
Taille_Message.Add(atoi(taille_champ));
Nom_Message.Add(nom_champ);
rs.MoveNext( );
}
// Fermeture du recordset
rs.Close();




mercredi 27 novembre 2002 à 12:57:29 | Re : Est-ce la meilleure méthode ?
jeudi 28 novembre 2002 à 12:55:57 | Re : Est-ce la meilleure méthode ?


Cette discussion est classée dans : taille, champ, rs, bit, cstring


Répondre à ce message

Sujets en rapport avec ce message

explication du fonctionnement d'un tab [ par jfk20004 ] quelqu'un peut il m'expliquer ce que font exactement ici les tableaux . j'aimerais savoir si ce sont les tableaux qui passent des valeurs ou si on pa suite fonctionnement d'un tab???? [ par jfk20004 ] voici la classe pour pour plus d'info:class Champ {public: Champ(); ~Champ(); // calcul du champ scalaire 3D void calcule(Metaball* liste, int nombr prob de tableau lié aux metaballs [ par jfk20004 ] quelqu'un peut il m'expliquer ce que font exactement ici les tableaux . j'aimerais savoir si ce sont les tableaux qui passent des valeurs ou si on pas pb avec CRecordset::GetFieldValue [ par toko ] bonjour :) voila, j'ai un petit pb au niveau de la recuperation des valeurs contenues dans les champ d'une table de la base de données.au fait, je rec Champ edit [ par mogwai93 ] bonjour j'ai un champ edit d'une certaine taille sur l'ecran. Lorsque je rentre du texte via l'affichage, j'ai une limitation qui semble correspondr champ de bits [ par obasileus ] Bonjour,je souhaiterai savoir comment faire pour déclarer un champs de bits et pouvoir ensuite accéder à la structure complète genre :typedef struct{  taille d'un Cstring [ par sendouda ] si vous voulez bien m'aider!!je veux calculer le nombre de caractères que contient une cstring y compris les espaces alors que la commande cstring.Get Port Série Bit a bit [ par Fuckly94 ] Bonjour,J'utilise Visual C++ 6.0,et je souhaiterais connecter un apareille via le port série.Mon probléme est que je ne souhaite pas utiliser la norme [API Win32 sans MFC] Manipulation EDIT et CString [ par nitrique ] Bonjour à tous, Bonjour à tous, J'aimerais savoir comment Ajouter et récuperer du texte d'un EDIT DLL et CString [ par DMK04 ] Bonjour,J'ai crée une DLL avec une fonction, qui affiche plusieurs fois la même chaîne, une fois en tant que char *, une fois en tant que CString * pu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 2,356 sec (3)

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