Seite 1 von 1
query.executedQuery()
Verfasst: 25. Mai 2006 17:59
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
Verfasst: 25. Mai 2006 18:08
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();
Verfasst: 25. Mai 2006 18:08
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>");
}
}
Verfasst: 25. Mai 2006 22:42
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
Verfasst: 25. Mai 2006 23:08
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!!
Verfasst: 25. Mai 2006 23:17
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 "Q
string" irtumlicherweise geschrieben habe...

(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;
}
Verfasst: 25. Mai 2006 23:22
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.
Verfasst: 25. Mai 2006 23:35
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...
Verfasst: 25. Mai 2006 23:40
von BartSimpson
Unter Windows ohne Debugger:
win32:debug {
CONFIG += console
}
in die .pro Datei einfügen.
Verfasst: 25. Mai 2006 23:55
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?