[gelöst] SQL-Abfrage mit QSqlQuery

Alles rund um die Programmierung mit Qt
Antworten
bigmil
Beiträge: 23
Registriert: 18. Mai 2005 11:06

[gelöst] SQL-Abfrage mit QSqlQuery

Beitrag von bigmil »

Hallo zusammen,

ich stehe hier vor einem kleinen Problem, darum wende ich mich grosser Zuversicht an Euch :lol:

Ich lese Daten aus einer Datenbank und füge diese danach in eine QListView (listView) ein. Dazu benutze ich zwei SQL-Queries, die ineinander verschachtelt sind. Hier das Beispiel:

Code: Alles auswählen

QSqlQuery query("SELECT DISTINCT Location FROM Knoten ORDER BY Location;");

if(query.isActive())
{

   while(query.next())
   {
      QListViewItem* itemLocation = new QListViewItem ( listView, query.value(0).toString());
      QString strLocation = query.value(0).toString();

      QSqlQuery query1("SELECT Wert1,Wert2,Wert3 FROM Knoten WHERE Location = strLocation ORDER BY NodeName");
			
      if(query1.isActive())
      {
         while(query1.next())
         {
            QListViewItem* itemData= new QListViewItem ( itemLocation, "", query1.value(0).toString(),
									 query1.value(1).toString(),
									 query1.value(2).toString());
				
         }
      }
   }
}
Vom ersten Query-Output nehme ich den Wert und speichere diesen in die Variable strLocation, anschliessend starte ich eine zweite Abfrage, wo ich diesen Wert dann einsetzen möchte. Leider klappt dies nicht. Irgendwie stimmt die Syntax nicht bei der zweite Abfrage. Wie muss ich die QString-Variable im zweiten Select-Statement deklarieren, damit diese den eigentlichen Wert übergibt? Kann mir da jemand weiterhelfen? Oder sieht jemand eine einfachere Möglichkeit?

Besten Dank für Eure Hilfe schon einmal im Voraus!![/code]
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

He, das ist geil!

so muss es sein:

Code: Alles auswählen

QString q = QString("SELECT Wert1,Wert2,Wert3 FROM Knoten WHERE Location = %1 ORDER BY NodeName").arg(strLocation);

QSqlQuery query1(q); 
bigmil
Beiträge: 23
Registriert: 18. Mai 2005 11:06

Beitrag von bigmil »

hey, besten dank für deine Hilfe. Werde es sofort versuchen!

Geb noch bescheid ob es gefunzt hat.

Bis dann...
bigmil
Beiträge: 23
Registriert: 18. Mai 2005 11:06

Beitrag von bigmil »

Oh man, war das jetzt ein stress...

Also lepsai, nochmal besten Dank für deinen Hinweis, der hat geholfen. Aber zuerst ging es doch nicht. Es fehlte was ganz wichtiges, und zwar \' vor und nach dem %1. Der Code würde dann folgendermassen aussehen:

Code: Alles auswählen

QString q = QString("SELECT Wert1,Wert2,Wert3 FROM Knoten WHERE Location = \'%1\' ORDER BY NodeName").arg(strLocation); 

QSqlQuery query1(q); 
Nochmals vielen Dank und wer weiss, vielleicht bis bald?? 8)
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Das geht übrigens eleganter:

Code: Alles auswählen

QSqlQuery query1;
query1.prepare("SELECT Wert1,Wert2,Wert3 FROM Knoten WHERE Location = ? ORDER BY NodeName");
query1.bindValue(0, strLocation);
query1.exec();
Vielleicht hilft dir das auch noch.
Antworten