jeromedeparis13
Messages postés4Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 2002
-
19 nov. 2002 à 23:49
cs_nEUrOne
Messages postés41Date d'inscriptiondimanche 17 novembre 2002StatutMembreDernière intervention14 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.)
// --- 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();
cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 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 ?