Angus131 Geschrieben 4. März 2009 Geschrieben 4. März 2009 hallo.. ich hab mal wieder ein problem mit meinem Programm =)... ich habe mir jetzt eine Datenbank angelegt indem ich mehrere Jahreszahlen hinterlegt habe (2008, 2009, usw) ... diese wollte ich jetzt in einer ComboBox anzeigen lassen aber irgendwie bekomme ich das nicht hin.. (später ordne ich zu den Jahreszahlen noch jeweils die Monate hinzu). hier mal der code wie ich die daten von meiner datenbank abfrage: int abruf; MYSQL *connectionDB; MYSQL addDB; mysql_init(&addDB); connectionDB=mysql_real_connect(&addDB, "*****", "*****", "*****", "****", 0,0,0); string query= "select Jahr from Jahresverwaltung"; abruf = mysql_query(connectionDB, query.c_str()); close(); und hier nochmal meine ComboBox: jahr = new QComboBox(this); jahr->setGeometry(300,120,100,20); monat = new QComboBox(this); monat->setGeometry(420,120,100,20); static const char* items[] = { "Jahre", 0 }; jahr->insertStrList( items ); hab da jetzt nur das Wort Jahre hingeschrieben =) ... später kommt halt der string da rein welcher dann alle anzeigt =) hab auch schon drüber nachgedacht den string in ein array zu packen... kann mir aber net vorstellen das das klappen sollte =) kann mir da jemand weiterhelfen? :hells: Zitieren
Klotzkopp Geschrieben 9. März 2009 Geschrieben 9. März 2009 Das Problem ist, dass du die Datenbank eigentlich gar nicht abfragst. Du schickst zwar die Abfrage hin. Die Ergebnisse dieser Abfrage holst du aber nicht ab. Zitieren
Angus131 Geschrieben 9. März 2009 Autor Geschrieben 9. März 2009 ja das ist ja mein problem =) ... ich hab keine ahnung wie ich das machen soll ... also ich schätz mal ich muss die Anfrage in einem string speichern? ... und dann muss ich das ja irgendwie in der tabelle ausgeben.. ich weiß nur nicht wie ;p Zitieren
Klotzkopp Geschrieben 9. März 2009 Geschrieben 9. März 2009 Dann solltest du dir mal die MySQL-API-Dokumentation zu Gemüte führen: MySQL :: MySQL 6.0 Reference Manual :: 20.9 MySQL C API Du brauchst vermutlich mysql_fetch_row und mysql_fetch_fields. Zitieren
Angus131 Geschrieben 9. März 2009 Autor Geschrieben 9. März 2009 alles klar werd ich mir mal durchlesen =) ... danke Zitieren
Angus131 Geschrieben 9. März 2009 Autor Geschrieben 9. März 2009 also ich hab jetzt nochmal geschaut wie ich eine anfrage abschicke... aber irgendwie geht das noch net so O.o hier nochmal der code: .h datei #include <qpushbutton.h> #include <qcombobox.h> #include <qwidget.h> #include <mysql/mysql.h> class Window: public QWidget{ Q_OBJECT private: QPushButton *anzeige; QComboBox *jahr; QComboBox *monat; public: Window(); ~Window(); int numRow; MYSQL_RES* res; MYSQL_ROW rowContent; void jahrresverwaltungabruf(); }; .cpp datei #include "window.h" #include <iostream> #include <qstring.h> using namespace std; Window::Window(){ //---------------Titel des Fensters------------------------------- this->setGeometry(0,0,1024,768); this->setCaption("Titel"); //-------------------------Combo Box----------------------------- jahr = new QComboBox(this); jahr->setGeometry(300,120,100,20); static const char* items[] = { "Jahre" , 0 }; jahr->insertStrList( items ); //-------------------------Buttons------------------------------- anzeige = new QPushButton("Anzeigen", this); anzeige->setGeometry(540,120,100,20); //-------------------------Connection Befehle-------------------- connect(anzeige, SIGNAL(clicked()),this, SLOT(jahrresverwaltungabruf())); this->show(); } //-------------------------Konstruktor und Destruktor------------ Window::~Window(){} void Window::jahrresverwaltungabruf(){ MYSQL *connectionDB; MYSQL addDB; mysql_init(&addDB); connectionDB=mysql_real_connect(&addDB, "localhost", "Benutzer", "Passwort", "verwaltung", 0,0,0); mysql_query(connectionDB, "Select Jahr from Jahresverwaltung;"); res = mysql_store_result(connectionDB); rowContent = mysql_fetch_row(res); cout << rowContent << endl; } hab das zum test noch nicht eingebunden sondern erstmal wollte ich probieren ob er irgendwas in der konsole ausgibt... aber es kommt garnichts O.o Zitieren
Angus131 Geschrieben 9. März 2009 Autor Geschrieben 9. März 2009 juhuuuu hab es nun hinbekommen das er wenigstens eine zahl ausgibt ;p nur jetzt zerbreche ich daran den wert einzufügen O.o .. hab das jetzt so versucht: .h datei #include <qpushbutton.h> #include <qcombobox.h> #include <qwidget.h> #include <mysql/mysql.h> class Window: public QWidget{ Q_OBJECT private: QPushButton *anzeige; QComboBox *jahr; QComboBox *monat; public: Window(); ~Window(); public slots: int jahrresverwaltungabruf(); }; .cpp datei #include "window.h" #include <iostream> #include <qstring.h> using namespace std; Window::Window(){ //---------------Titel des Fensters------------------------------- this->setGeometry(0,0,1024,768); this->setCaption("Titel"); //-------------------------Combo Box----------------------------- jahr = new QComboBox(this); jahr->setGeometry(300,120,100,20); static const char* items[] = { "Jahre" , 0 }; jahr->insertStrList( items ); //-------------------------Buttons------------------------------- anzeige = new QPushButton("Anzeigen", this); anzeige->setGeometry(540,120,100,20); //-------------------------Connection Befehle-------------------- connect(anzeige, SIGNAL(clicked()),this, SLOT(jahrresverwaltungabruf())); this->show(); } //-------------------------Konstruktor und Destruktor------------ Window::~Window(){} void Window::jahrresverwaltungabruf(){ int jahrresverwaltungabruf(){ MYSQL *connectionDB; MYSQL_RES *result; MYSQL_ROW recordset_row; const char *strSQL; MYSQL addDB; mysql_init(&addDB); connectionDB=mysql_real_connect(&addDB, "localhost", "Benutzer", "Passwort", "verwaltung", 0,0,0); strSQL="SELECT Jahr FROM Jahresverwaltung;"; mysql_query(connectionDB,strSQL); result=mysql_store_result(connectionDB); recordset_row=mysql_fetch_row(result); return recordset_row[0]; } hab das versucht die Funktion jahrresverwaltungabruf so zu initialisieren das sie einen wert zurückgeben kann ... sprich den wert recordset_row[0] ... aber wenn ich es versuche zu kompilieren dann sagt er mir es ist nicht definiert ... also muss ich irgendwas falsch gemacht haben um den wert zurückzugeben... hat jemand ne ahnung wie ich das richtig machen kann? Zitieren
Klotzkopp Geschrieben 9. März 2009 Geschrieben 9. März 2009 Sieht so aus, als hättest du innerhalb der Methode Window::jahrresverwaltungabruf eine Funktion jahrresverwaltungabruf definiert. Lokale Funktionsdefinitionen sind in C++ nicht erlaubt. Zitieren
Angus131 Geschrieben 9. März 2009 Autor Geschrieben 9. März 2009 ahh sorry xD .. hab ich falsch kopiert ;p das void Window::jahrresverwaltungabruf(){ hatte ich gelöscht es existiert nur int jahrresverwaltungabruf() Zitieren
Klotzkopp Geschrieben 9. März 2009 Geschrieben 9. März 2009 das void Window::jahrresverwaltungabruf(){ hatte ich gelöschtDu hast diese Methode aber in der Klassendefinition von Window definiert. Irgendein anderer Teil des Programms braucht sie vermutlich. Ich glaube, ein C++-Grundlagentutorial wäre hier angebracht, bevor du dich in grafische Oberflächen und Datenbankzugriffe stürzt. Zitieren
Angus131 Geschrieben 9. März 2009 Autor Geschrieben 9. März 2009 guter tipp ;p ... hab mir jetzt zwar kein tutorial durchgelesen aber hab es jetzt hinbekommen ;p ... jahrresverwaltungabruf() hab ich nun wieder als void initialisiert und einfach im programm aufgerufen >< ... da hätte ich ja auch von allein drauf kommen können ;p danke für deine hilfe! =) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.