Datensätze in einem mehrdimensionalen Array zurückgeben.
-
Hallo,
ich habe zur Zeit folgendes Problem. Ich möchte in einer Funktion Datensätze aus einer Access-DB auslesen und die Datensätze in einem mehrdimensionalen Array zurückgeben.
Beispiel:
void C_DB_Functions::get_Adresses(CString strDBTable, ???& myMultidimensionalArray) { CString Query = ""; int i = 0,j = 0; CDaoDatabase myDB; COleVariant var; this->Connect2DB(myDB); CDaoRecordset myRSet(&myDB); CDaoFieldInfo myFI; Query.Format("select * from %s",strDBTable); myRSet.Open(dbOpenSnapshot,Query,dbReadOnly); if (!myRSet.IsEOF()) { while (!myRSet.IsEOF()) { for (i = 0; i < myRSet.GetFieldCount(); i++) { myRSet.GetFieldInfo(i,myFI,AFX_DAO_PRIMARY_INFO); if (myFI.m_nType == dbText || myFI.m_nType == dbMemo) { var = myRSet.GetFieldValue(i); // Hier möchte ich gerne das Array füllen. j = Datensatznummer, i = Feldnummer myMultidimensionalArray[j][i] = CString(V_BSTRT(&var)); } } myRSet.MoveNext(); } j++; } var.Clear(); myDB.Close(); }
Folgende Fragen habe ich dazu:
1. Mit welchem Datentyp kann ich multidimensionale Arrays erzeugen, die CStrings speichern?
Beispiel:
myArray[0][0] = "Vorname1";
myArray[0][1] = "Nachname1";
myArray[1][0] = "Vorname2";
myArray[1][1] = "Nachname2";2. Wie kann ich diese Datentypen initialisieren und an Funktionen übergeben?
Vielen Dank!
Gruß,
Elayas
-
Also entweder schaust du mal bei boost vorbei, oder du schachtesl z.B einfach 2 STL-Container
vector<vector<CString>> m_data;
-
Guten Morgen Pellaeon,
wenn ich versuche diese Variable in meiner Header zu initialisieren, erhalte ich unheimlich viele Fehler vom Compiler.
Kann man Vectoren über Klassen hinweg übergeben?
Gruß,
Elayas
-
also vector ist definiert im Header vector, also
#include <vector>
Das ganze liegt im namespace std, also entweder immer std::vector schreiben oder
using namespace std;
machen.
Die Vektoren aus der STL lassen sich kopieren, ja. Allerdings sollte man selber Sorge tragen, dass die Objekte in dem Container auch wirklich kopierbar sind.