2010-10-19 5 views
0

Pouvez-vous me donner une idée de la meilleure façon de stocker dynamiquement les données provenant de la base de données? Je connais le nombre de colonnes avant, donc je veux créer une structure de données dynamiquement qui contiendra toutes les données, et j'ai besoin de réorganiser les données pour montrer la sortie. En un mot - lorsque nous tapons la requête "sélectionnez * de la table" - les résultats viendront. comment stocker les résultats de manière dynamique. (En utilisant des structures, une carte, des listes ..). Merci d'avance.stocker dynamiquement des données provenant de la base de données - C++

Répondre

0

En un mot, les structures de données que vous utilisez pour stocker les données dépendent vraiment de vos habitudes d'utilisation des données. C'est-à-dire:

  • Votre besoin de données est-il simplement de le générer? Si oui, pourquoi stocker les données?
  • Sinon, effectuez-vous des recherches sur les données?
  • La commande est-elle importante?
  • Allez-vous effectuer des calculs avec les données?
  • De combien de données aurez-vous besoin?
  • etc ...
+0

yup .. penser de cette façon aussi, présent maintenant se concentrer est de savoir comment stocker des données de façon dynamique, si possible avec des noms de colonnes aussi ... – jony

0

Un tableau de chaînes (StringList à Delphes, ne sais pas ce que vous avez en C++), un par ligne, où chaque ligne est une chaîne séparée par des virgules. Cela peut être facilement exporté et lu dans Excel en tant que fichier .csv, importé dans beaucoup de bases de données. Ou, un document XML peut être meilleur. Ou autre chose. "ça dépend ...."

-1

Il existe un certain nombre d'options pour vous préférablement de la STL. Utilisez une classe pour stocker une ligne dans un objet de classe ou dans une chaîne si vous ne souhaitez pas créer d'objets si les lignes sont assez volumineuses et que vous n'avez pas besoin d'accéder à toutes les lignes renvoyées.

1) Utiliser un vecteur - Utilisez des pointeurs intelligents (shared_ptr) pour créer des objets de la classe et les insérer dans un vecteur. En raison de la copie impliquée dans un vecteur, j'utiliserais un shared_ptr. Triez-le plus tard

2) Utiliser une carte/un ensemble - Créer et insérer des éléments peut être coûteux, si vous recherchez des insertions plus rapides. Regardez peut-être plus vite.

3) Carte de hachage - L'insertion et le temps de recherche sont meilleurs qu'une carte/ensemble.

+0

pouvez-vous élaborer 3ème point .. – jony

+0

@jony - http: //publib.boulder .ibm.com/infocenter/comphelp/v9v111/ index.jsp? topic =/com.ibm.xlcpp9.aix.doc/standlib/stl_unordered_map.htm. – DumbCoder

+0

@jony - Voir la section Analyse des performances. http://en.wikipedia.org/wiki/Hash_table. Le temps de recherche est le log n (base 2) pour une carte/ensemble, dans l'implémentation du compilateur. L'insertion peut être lente car vous insérez un élément à sa place correcte, ce qui peut nécessiter de modifier la structure de l'arbre noir rouge sous-jacent. – DumbCoder