Не удается подготовить Qt SQL

Я пытаюсь запустить этот код Qt

QString serverName = "localhost";
QString dbName = "zfserver";
QString userName = "root";
QString passWord = "123456";

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setConnectOptions();

db.setHostName(serverName);
db.setDatabaseName(dbName);
db.setUserName(userName);
db.setPassword(passWord);

if(db.open())
{
    QSqlQuery query;
    query.prepare("INSERT INTO account (name, email, password, type) "
                  "VALUES (:name, :email, :password, :type)");
    query.bindValue(":name", "atef");
    query.bindValue(":email", "[email protected]");
    query.bindValue(":password", "123");
    query.bindValue(":type", "2");

    if (query.exec())
    {
        qDebug() << "OK";
    } else {
        qDebug() << "Error" << query.lastError().text();
    }

    db.close();
}

Но я получаю эту ошибку

Ошибка «Использование неподдерживаемого типа буфера: 1701601889 (параметр: 1) QMYSQL3: невозможно привязать значение»

Если я изменю запрос без bindValue, он сработает. Есть ли способ решить эту проблему?


person Atef Ramadan    schedule 18.04.2014    source источник
comment
1) QT - это другой проект. Прочтите тегвики. 2) Какая это версия Qt? 3) Что это за платформа? 4) Что это за архитектура? 5) Почему вы используете QMYSQL3?! 5) Вы проверили возвращаемое значение prepare? 6) Вы пытались распечатать последний запрос?   -  person lpapp    schedule 18.04.2014
comment
Я использую QT Qt 5.2.1 с mingw windows 7, я только что скачал QT, установил его и попробовал в первый раз. Я не знаю, как использовать другую версию QMYSQL3 по умолчанию, когда я меняю запрос на обычный запрос без подготовки и bindValue выполняется без ошибок.   -  person Atef Ramadan    schedule 18.04.2014
comment
Можете ли вы ответить 5-6), пожалуйста? Кроме того, убедитесь, что вы не вызываете addDatabase повторно, так как его следует вызывать только один раз.   -  person lpapp    schedule 19.04.2014
comment
спасибо, Ласло, я исправил это, перестроив драйвер QT mysql.   -  person Atef Ramadan    schedule 19.04.2014


Ответы (1)


Попробуйте пересобрать драйвер SQL.

QMYSQL3 кажется старым.

person lpapp    schedule 19.04.2014