Название: Подключение QT к Access, операция INSERT Отправлено: Praid от Февраль 06, 2018, 10:54 Товарищи, такой вопрос.
Подключил QT к ACCESS. Таким вот образом: QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setHostName("127.0.0.1"); db.setDatabaseName("Driver={Microsoft Access Driver (*.mdb, *.accdb)}SN=''BQ=C:\\database.accdb"); db.setUserName("root"); if(!db.open()) qDebug() << db.lastError().text(); else qDebug() << "Connect!"; К базе данных подключился, qDebug мне написал Connect, всё хорошо. На форме в представлении view записи из БД сохранились. Далее пытаюсь сделать вставку в БД. Таким образом: QSqlQuery* query = new QSqlQuery(db); query->prepare("INSERT INTO devices(type, number) VALUES (:type, :number);"); query->bindValue(":type", "someType"); query->bindValue(":number", 123); query->exec(); qDebug() << query->lastError().databaseText(); qDebug() << query->lastError().driverText(); qDebug выдаёт следующее: "[Microsoft][Драйвер ODBC Microsoft Access] Ошибка синтаксиса в инструкции INSERT INTO." "QODBC3: Unable to prepare statement" Я уже всякий способ перепробовал. C использованием безымянных параметров: QSqlQuery* query = new QSqlQuery(db); query->prepare("INSERT INTO devices(type,number) VALUES (?, ?);"); query->bindValue(":type", "someType"); query->bindValue(":number", 123); qDebug() << query->lastError().databaseText(); qDebug() << query->lastError().driverText(); Без подготовки: query->exec("INSERT INTO devices(type, number) VALUES ('someType',157);"); Одна и та же ошибка: "[Microsoft][Драйвер ODBC Microsoft Access] Ошибка синтаксиса в инструкции INSERT INTO." "QODBC3: Unable to prepare statement" Кто может подсказать где проблема в синтаксисе? При использовании такого запроса: QSqlQuery query; query.prepare("INSERT INTO devices(type,number) VALUES (?, ?);"); query.bindValue(":type","someType"); query.bindValue(":number","123"); query.exec(); qDebug() << query.lastError(); Ошибка: QODBCResult::exec: Unable to execute statement: "[Microsoft][Драйвер ODBC Microsoft Access]Неверное поле COUNT " QSqlError("17", "QODBC3: Unable to execute statement", "[Microsoft][Драйвер ODBC Microsoft Access]Неверное поле COUNT ") А что за поле COUNT, если у меня в таблице только два столбца - type, number? Название: Re: Подключение QT к Access, операция INSERT Отправлено: qate от Февраль 06, 2018, 12:08 https://stackoverflow.com/questions/23449776/odbc-microsoft-access-drivercount-field-incorrect
Название: Re: Подключение QT к Access, операция INSERT Отправлено: Praid от Февраль 06, 2018, 13:55 Всё. Проблема решена. Всё дело в скобках [].
QSqlQuery query; if(query.prepare("INSERT INTO [devices] ([type],[number]) VALUES (:type, :number)")) { query.bindValue(":type","someType"); query.bindValue(":number","124"); qDebug() << query.exec(); } qDebug() << query.lastError(); |