Est-ce la meilleure méthode ?

jeromedeparis13 Messages postés 4 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2002 - 19 nov. 2002 à 23:49
cs_nEUrOne Messages postés 41 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 14 avril 2004 - 28 nov. 2002 à 12:55
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

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
20 nov. 2002 à 11:32
- 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 ?
0
jeromedeparis13 Messages postés 4 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2002
21 nov. 2002 à 11:27
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.
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
21 nov. 2002 à 11:59
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 ?
0
jeromedeparis13 Messages postés 4 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2002
21 nov. 2002 à 13:34
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!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_nEUrOne Messages postés 41 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 14 avril 2004
24 nov. 2002 à 22:23
C'est obligatoire pour toi de passer par une base ACCESS ?

Romain Gaucher
r_gaucher@hotmail.com
0
jeromedeparis13 Messages postés 4 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2002
27 nov. 2002 à 12:57
0
cs_nEUrOne Messages postés 41 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 14 avril 2004
28 nov. 2002 à 12:55
0
Rejoignez-nous