query.executedQuery()

Alles rund um die Programmierung mit Qt
Antworten
eule3
Beiträge: 56
Registriert: 30. Juni 2005 23:13

query.executedQuery()

Beitrag von eule3 »

hallo


Also im Manual steht das die Funktion executedQuery()
von QSqlQuery als Rückgabewert einen QString hat.
Und in meinen Lehrgangsunterlagen steht das %s
das richtige Formatzeichen für Strings ist.
Somit sollte also folgendes ohne Probleme funktionieren:

qDebug("SQL-Text: %s",query.executedQuery())

Leider ist der Compiler anderer Meinung, er sagt das
executedQuery() einen int Rückgabewert hat.
Wer verrät mir bitte was ich hier falsch mache?
Ich könnte diese Funktion wirklich gut gebrauchen.
Vielen Dank im voraus.


mfg
Querdenker
Beiträge: 99
Registriert: 1. Dezember 2005 17:44
Wohnort: Karlsruhe

Beitrag von Querdenker »

Hi,

so gefragt ist das wohl richtig ;) Allerdings wird das der Pointer auf VTable auf eine Klasse namens: QString sein. Genau diese Klasse beinhaltet den return.

QString t = QSqlQuery::executedQuery();
e Grüssle au
Q... ;)
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Der einfache weg ist alles zu QString rausholen.... aus der db....

QString(query.value(loop).toString())

wenn noetig kann man die int immer noch finden......

Code: Alles auswählen

bool is_numeric(QString incomming)
{
    incomming.replace(QString(" "), QString("")); /* trimm */
    QString str2 = incomming;
    bool ok; 
    str2.toFloat(&ok); 
return ok;
}

Das ist ein dump export zu xml....

Code: Alles auswählen

void Gui_Starter::TablesDumpXML(QString t,QString file)
{
     QString tablequery ="SELECT * FROM "+t;  /* table */
     QString line;
     QString rowone;
     QSqlQuery query;
     query.exec(tablequery);
     QSqlRecord rec = query.record();  /* nummer col */
     int numcol = rec.count();
     int loop;
          while (query.next()) {
            line="";
            /* rows */
            file_put_contents_append(file,"<rows>");
              for(loop=0; loop < numcol; loop++) {
                  rowone = XML_utf8(query.value(loop).toString());
                  /* rowone.replace(QString("'"), QString("\'")); XML_utf8 quote! */ 
                  
                    if (!is_numeric(rowone)){
                       rowone = QString( "'%1'" ).arg( rowone );
                       file_put_contents_append(file,"<row name=\""+rec.fieldName(loop)+"\" type=\"string\">"+XML_utf8(query.value(loop).toString())+"</row>");                        
                      } else {
                       file_put_contents_append(file,"<row name=\""+rec.fieldName(loop)+"\" type=\"digit\">"+XML_utf8(query.value(loop).toString())+"</row>");
                      }
                      
                  if (loop !=numcol-1) {
                    line = line+QString( "%1," ).arg( rowone ); 
                  } else {
                   line = line+rowone;   
                  }
               rowone="";
              }
            /* rows */
            
                line.prepend("INSERT INTO "+t+" VALUES (");
                line.append(");");                
           file_put_contents_append(file,"<sqlrow>"+line+"</sqlrow>\n</rows>");
        }
}
eule3
Beiträge: 56
Registriert: 30. Juni 2005 23:13

Beitrag von eule3 »

Hallo

Danke für die Antworten.
Ich denke das ich mich da etwas falsch
ausgedrückt habe. Ich möchte einfach das
der nachfolgende Code "Hallo Welt" ausgibt:

QString h = "Welt" ;
qDebug( "Hallo %s", h);

Danke und mfg
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

das muste mit Zeiger schießen:)
qDebug("%s",xstring.toAscii().data());
Aber Vorsicht, wenn der QString länger als 4000 und ein paar zerquetsche Zeichen lang ist, kracht es!!
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Ehrlich gesagt ich habe noch niee qdebug gebraucht ...
ich mache es auf die simple art..... so kann ich die file vergleichen und auch auslesen nach zeit....
und wenn ich die funktion nicht mehr gebrauche...
schreibe ich return true; hinein....

geht immer .. auf mac,win,linux....
ohne limit... beim programm is sowieso fast alles QString

nur einmal ist es nicht gelaufen als ich "Qstring" irtumlicherweise geschrieben habe...:D (kleines s)

Code: Alles auswählen



bool mydebug(QString fullFileName,QString xml);


bool mydebug(QString fullFileName,QString xml)
{

    QString data = QString( "%1 <=logline=> %2 \n" ).arg( int2char(  (int)time( NULL ) ) , xml  );
    QFile f( fullFileName );
	if ( f.open( QFile::Append | QFile::Text ) )
	{
		QTextStream sw( &f );
		sw << data;
		f.close();
		return true;
	}
	return false;
    
}

BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

qdebug ist ja wie der Name schon sagt in 1. Liene zum debuggen da. Da die Meldung die man ausgibt dann im Debugger sichtbar wird.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

BartSimpson hat geschrieben: Da die Meldung die man ausgibt dann im Debugger.
Auf Linux habe ich gesehen wie die qdebug meldungen kommen... mit http://www.kdevelop.org/ aber wie bekommt man die meldungen im Window? mit einem bat file? oder sowas... mit start optionen...
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Unter Windows ohne Debugger:
win32:debug {
CONFIG += console
}
in die .pro Datei einfügen.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Super .... geht....
Aber da kommen sehr wenig info....
Mit meiner logfile methode habe ich wenigstens zeit __FILE__ & __LINE__

Mit AT dort wo ich reinshreibe....

Code: Alles auswählen

#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#define AT __FILE__":"TOSTRING(__LINE__)" "
start ausgabe......

bananen
QString::arg(): Argument missing: _running_sqlclass.log, C:/Documents and Settin
gs/ppk-it/.shop_manager/
QString::arg(): Argument missing: _running_sqlclass.log, C:/Documents and Settin
gs/ppk-it/.shop_manager/
QString::arg(): Argument missing: _running_sqlclass.log, C:/Documents and Settin
gs/ppk-it/.shop_manager/
Object::connect: Connecting from COMPAT signal (QAction::activated()).
Object::connect: Connecting from COMPAT signal (QAction::activated()).
QString::arg(): Argument missing: _running_sqlclass.log, C:/Documents and Settin
gs/ppk-it/.shop_manager/
Object::connect: Connecting from COMPAT signal (QAction::activated()).
Object::connect: Connecting from COMPAT signal (QAction::activated()).
QString::arg(): Argument missing: _running_sqlclass.log, C:/Documents and Settin
gs/ppk-it/.shop_manager/
QString::arg(): Argument missing: _running_sqlclass.log, C:/Documents and Settin
gs/ppk-it/.shop_manager/


Gibt es andere debugger die zur laufzeit ... mehr info geben auf window?
Antworten