Here is an example:
db.setHostName("localhost");
db.setPort(3306);
db.setUserName("dtf");
db.setPassword("dtf");
db.setDatabaseName("dtf");
if(!db.open()) {
qDebug() << db.lastError();
return;
}
sql.prepare("SELECT result FROM test WHERE id = 1;");
if(!sql.exec()) {
qDebug() << db.lastError();
return;
}
sql.next();
qDebug() << "Result: " << sql.value(0).toDouble();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setPort(3306);
db.setUserName("dtf");
db.setPassword("dtf");
db.setDatabaseName("dtf");
if(!db.open()) {
qDebug() << db.lastError();
return;
}
QSqlQuery sql;
sql.prepare("SELECT result FROM test WHERE id = 1;");
if(!sql.exec()) {
qDebug() << db.lastError();
return;
}
sql.next();
qDebug() << "Result: " << sql.value(0).toDouble();
To copy to clipboard, switch view to plain text mode
The output of this example is:
The MySQL column "result" is of type DOUBLE(10,2). If i change the type to DOUBLE() only, the result is the same.
The data selected by the statement is "14.99".
Its an absolute simple example. Why this wont work?
Added after 23 minutes:
Ive tested it without prepared-statements! And now it works! Is it a BUG in QT5?
Thats working:
db.setHostName("localhost");
db.setPort(3306);
db.setUserName("dtf");
db.setPassword("dtf");
db.setDatabaseName("dtf");
if(!db.open()) {
qDebug() << db.lastError();
return;
}
if(!sql.exec("SELECT result FROM test WHERE id = 1;")) {
qDebug() << db.lastError();
return;
}
sql.next();
qDebug() << "Result: " << sql.value(0).toDouble();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setPort(3306);
db.setUserName("dtf");
db.setPassword("dtf");
db.setDatabaseName("dtf");
if(!db.open()) {
qDebug() << db.lastError();
return;
}
QSqlQuery sql;
if(!sql.exec("SELECT result FROM test WHERE id = 1;")) {
qDebug() << db.lastError();
return;
}
sql.next();
qDebug() << "Result: " << sql.value(0).toDouble();
To copy to clipboard, switch view to plain text mode
Bookmarks