LINUX.ORG.RU

Qt ошибка SQL

 , ,


0

1

Привет, ЛОР!

Стоит MySQL сервер с БД sqlhand и таблицей в ней, pretest. Никак не могу разобраться, почему не выполняется запрос. serverName пробовал разные, результат один.

Код на Qt:

sqlhand::sqlhand(QObject *parent) : QObject(parent)
{
    serverName = "LOCALHOST\\SQLEXPRESS";
    dbName = "sqlhand";
    user = "root";
    pass = "pass";

    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setHostName(serverName);
    db.setDatabaseName(dbName);
    db.setUserName(user);
    db.setPassword(pass);

    if(db.open()) {
        qDebug() << "Connection opened!";

        QSqlQuery query;

        if(query.exec("SELECT * FROM pretest")) {
            while(query.next()) {
                qDebug() << query.value(0).toString();
            }
        }
        else {
            qDebug() << "ERROR! " << db.lastError().text();
        }

        qDebug() << "DB Close!";
        db.close();
    }
    else {
        qDebug() << "ERROR! " << db.lastError().text();
    }
}
[/cpp]

Выхлопы:

Connection opened! 
ERROR!  " " 
DB Close!

QSQLITE QSQLiteDriver sqlite *connection
Стоит MySQL сервер с БД

anonymous ()
Ответ на: комментарий от anonymous

Драйвера не прогружаются, но есть. Жалуется, что не может найти существующие, как он пишет в следующей строчке. Поэтому работаю как с SQLITE. Работать же вроеде должно, или я ошибаюсь?

Human-source ()
Ответ на: комментарий от ziemin

драйвер поправь

Тут проблемки, небольшие...

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
ERROR!  "Driver not loaded Driver not loaded"
Human-source ()

Однако. Говоришь, что стоит MySQL, в настройках хоста указан Microsoft SQL Server, а цепляться пытаешься к SQLite - может определишься, какая же у тебя все же СУБД?

alex-w ★★★★★ ()

apt-get install qt4-plugin-mysql как то так примерно. по памяти пишу. плагины баз данных вынесли в отдельные пакеты.

MikeDM ★★★★★ ()
Ответ на: комментарий от ziemin

Не получается!

QCoreApplication a(argc, argv);
a.addLibraryPath("/home/platon/Qt/Qt_5.1.1_64bit/5.1.1/gcc_64/bin");

Даже так пробовал! Находит, но результат тот же :(

LIBS    += -L"/home/platon/Qt/Qt_5.1.1_64bit/5.1.1/gcc_64/bin" -lqsqlmysql

Ни выпуск, ни отладка.

Human-source ()
    if(db.open()) {
        qDebug() << "Connection opened!";

        QSqlQuery query;

        if(query.exec("SELECT * FROM pretest")) {

А кому ты это куери засылаешь? У тебя дебе само по себе, а куери само по себе.

anonymous ()
Ответ на: комментарий от anonymous

Запрос задаётся так:

query.exec("SELECT * FROM pretest")

А БД сама должна найти.

Human-source ()
Ответ на: комментарий от Human-source

амиго хватит мучаться, черкни мне в гуглочат. мыло в профиле. наведу на путь истинный.

MikeDM ★★★★★ ()
Последнее исправление: MikeDM (всего исправлений: 1)
Ответ на: комментарий от MikeDM

Спасибо, но я решил использовать другую библиотеку для SQL запрсов. Она даже больше подходит для моей текущей задачи!

Human-source ()
Ответ на: комментарий от Human-source

Что бд должна найти? Какая бд должна найти? Почему должна найти?

Ты своему квери указал, какая бд должна его выполнить? Если сам не догоняешь, вот тебе конструктор с указанием той бд, которая должна выполнить это квери

QSqlQuery(QSqlDatabase db)

А вот тебе exec из бд, который выполнит твоё квери

QSqlQuery exec(const QString & query = QString()) const

и как оно может быть использовано

QSqlQuery query = db.exec("моё грёбаное квери");

или

QSqlQuery query(db);
query.exec("ну ты понял что");

А вот ссылки на доки, если сам найти не можешь QSqlQuery db.exec

anonymous ()
Ответ на: комментарий от Human-source

Спасибо, но я решил использовать другую библиотеку для SQL запрсов.

Ох чует мое сердце, что ты еще про меня вспомнишь =)

MikeDM ★★★★★ ()
Ответ на: комментарий от anonymous

Я смотрел видео с пример, там такого не было, всё работало. Спасибо, что подсказал, но это не помогает.

Human-source ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.