Selecting data from mysql using qt?
-
wrote on 12 Oct 2010, 09:46 last edited by
I think you need to check apostrophes in that command.
-
wrote on 12 Oct 2010, 09:46 last edited by
ok, you have wrong apostrof type there. I mean this >> '
-
wrote on 12 Oct 2010, 09:48 last edited by
i tried without apostrophes as well but same error
-
wrote on 12 Oct 2010, 09:49 last edited by
nope, you had ` before the root and not '
that was the error -
wrote on 12 Oct 2010, 09:51 last edited by
ok, wait a second, I checked it in the meantime and it won't work without password, stay tuned, I post the right command
-
wrote on 12 Oct 2010, 09:51 last edited by
you mean like this
grant all on testTwo.* toroot
@localhost
;
if yes it also displaying same error -
wrote on 12 Oct 2010, 09:52 last edited by
so, here we go:
grant all on testTwo.* to 'root'@'localhost' identified by 'password';
Make the right apostrophes! :) You have to set the password in your Qt app too.
-
wrote on 12 Oct 2010, 09:52 last edited by
ok, wait I see
-
wrote on 12 Oct 2010, 09:53 last edited by
the Devnet's forum motor changes the apostrophes somehow... use the straight apostrophes everywhere
I mean this @'@ -
wrote on 12 Oct 2010, 10:01 last edited by
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
@ -
wrote on 12 Oct 2010, 10:02 last edited by
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)
@ -
wrote on 12 Oct 2010, 10:04 last edited by
[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'?
-
wrote on 12 Oct 2010, 10:05 last edited by
0 rows is just fine with the grant command... have you set the password on
@db.setPassword("password");@
?
-
wrote on 12 Oct 2010, 10:09 last edited by
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 -
wrote on 12 Oct 2010, 10:13 last edited by
[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.
-
wrote on 12 Oct 2010, 10:15 last edited by
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;
}
@
-
wrote on 12 Oct 2010, 10:18 last edited by
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 :)
-
wrote on 12 Oct 2010, 10:21 last edited by
You put my debug before opening the connection. Put it after.
-
wrote on 12 Oct 2010, 10:24 last edited by
i changed db.lastError().text(); and place it after db.open()
this is the output
@
Starting /home/zafar/c++/dbExample-build-desktop/dbExample...
"Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) QMYSQL: Unable to connect"
false
QSqlQuery::exec: database not open
/home/zafar/c++/dbExample-build-desktop/dbExample exited with code 0
@the commands in mysql displayed are here
repectively to your commands@
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| cdcol |
| mysql |
| phpmyadmin |
| test |
| testTwo |
+--------------------+
6 rows in set (0.01 sec)mysql> use testTwo
Database changed
mysql> show tables
-> ;
+-------------------+
| Tables_in_testTwo |
+-------------------+
| testTable |
+-------------------+
1 row in set (0.01 sec)@
69/150