Я использовал драйвер MySQL от Qt с 32-битным MinGW Qt.Это работало:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("MyDatabase");
//SETUP
if (db.open) {
QSqlQuery q;
if (q.prepare("SELECT id FROM Things WHERE parent_id = :pid")) {
q.bindValue(":pid", 1);
qDebug() << boundValues();
if (q.exec) {
//DO STUFF
} } }
Но теперь, когда я использую 64-битную MSVS Qt, мне нужно использовать MySQL ODBC Connector.Я настроил его и изменил код, чтобы отразить это:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("Driver={MySQL ODBC 8.0 Unicode Driver};DATABASE=MyDatabase;");
Это все, что я сделал.Операторы SELECT без предложения WHERE работают должным образом, и я могу манипулировать базой данных через QSqlTableModel, как и раньше.
Просто привязка перестала работать ... Я имею в виду, что привязанное значение есть, и qDebug возвращает это:
QMap ((": pid", QVariant (int, 1)))
но теперь запрос не возвращает строк после exec;но также без ошибок ... это также работает:
q.prepare(QString("SELECT id FROM Things WHERE parent_id = '%1'").arg(1))
Любая помощь?