Est-ce la meilleure méthode ?

Signaler
Messages postés
4
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2002
-
Messages postés
41
Date d'inscription
dimanche 17 novembre 2002
Statut
Membre
Dernière intervention
14 avril 2004
-
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 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();

7 réponses

Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

- 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 ?
Messages postés
4
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2002

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.
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

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 ?
Messages postés
4
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2002

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!
Messages postés
41
Date d'inscription
dimanche 17 novembre 2002
Statut
Membre
Dernière intervention
14 avril 2004

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

Romain Gaucher
r_gaucher@hotmail.com
Messages postés
4
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2002

Messages postés
41
Date d'inscription
dimanche 17 novembre 2002
Statut
Membre
Dernière intervention
14 avril 2004