Selecting data from mysql using qt?
-
there is an error in sql syntax
@
mysql> grant all on testTwo.* to ‘root’@’localhost’;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '��root’@’localhost’' at line 1
@ -
Ok, back to your Qt program:
@#include <QApplication>
#include <QtSql>int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setDatabaseName("testTwo"); db.setUserName("root"); db.setPassword(""); db.setHostName("localhost"); bool ok = db.open(); qDebug() << ok; QSqlQuery query; query.exec("SELECT firstname,lastname FROM testTable"); while(query.next()) { QString firstName = query.value(0).toString(); QString secondName = query.value(1).toString(); qDebug() << "First Name: " << firstName << "Last Name:" << secondName; qDebug() << db.lastError(); } return 0;
}@
Notice, we don't set a password here.
The end is 'return 0' instead of 'a.exec()', and it won't hang. The exec() starts the main event loop, and you don't use it here... -
mysql query did its job its now successful but when i use qt code and try to make it run it displays same error
@
Starting /home/zafar/c++/dbExample-build-desktop/dbExample...
false
QSqlQuery::exec: database not open
/home/zafar/c++/dbExample-build-desktop/dbExample exited with code 0
@ -
[quote author="doforumda" date="1286877766"]wait i think the query is not sucessful because it displays this message 0 rows affected
@
mysql> grant all on testTwo.* to 'root'at'localhost' identified by 'password';
Query OK, 0 rows affected (0.01 sec)
@[/quote]Did you run that command with 'password' instead of '123456'?
-
this is the output after adding lastError.text()
@
Starting /home/zafar/c++/dbExample-build-desktop/dbExample...
" "
false
QSqlQuery::exec: database not open
/home/zafar/c++/dbExample-build-desktop/dbExample exited with code 0
@lyut: yes i use command with 'password' not '123456'
Dii sorry i didnt understand this db.setPassword("password");
where should i set this -
[quote author="doforumda" date="1286878193"]
lyut: yes i use command with 'password' not '123456'Dii sorry i didnt understand this db.setPassword("password");
where should i set this[/quote]- I assume you should have specified the actual password when running that query.
- @db.setPassword("password");@ should be added to your source code just where you set db options.
-
i ran query again with actual password
i have already setup password in my qt code here it is
@
#include <QApplication>
#include <QtSql>int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setDatabaseName("testTwo"); db.setUserName("root"); db.setPassword("123456"); db.setHostName("localhost"); qDebug() << db.lastError().text(); bool ok = db.open(); qDebug() << ok; QSqlQuery query; query.exec("SELECT firstname,lastname FROM testTable"); while(query.next()) { QString firstName = query.value(0).toString(); QString secondName = query.value(1).toString(); qDebug() << "First Name: " << firstName << "Last Name:" << secondName; qDebug() << db.lastError(); } return 0;
}
@
-
db.lasterror().text() should come after line 16 (db.open()).
The password in the Qt code must be the same what you have specified in the GRANT command above.I suspect probably, you haven't made the database and the table in mysql yet, if you go back to mysql command line, what do you get by these commands:
@SHOW databases;
USE testTwo;
SHOW tables;@
I go to dinner, be back in a few minutes :)