Название: Подключение к Mysql Отправлено: useruser от Октябрь 01, 2013, 20:00 Хочу выполнить запрос на удалённой базе
Код: QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "mydb"); Пишет ошибку QSqlQuery::exec: database not open. Несмотря на то, что "Соединение с базой установлено" (ok==true) Запрос не выполняется - в базе-таблице не появляется запись. Удалённый доступ к бд открыт. В чём тут ошибка? Название: Re: Подключение к Mysql Отправлено: Bepec от Октябрь 01, 2013, 20:03 А попробовать выполнить запрос от имени db.exec() пробовали?
Название: Re: Подключение к Mysql Отправлено: Alex Custov от Октябрь 01, 2013, 20:13 Цитировать QSqlDatabase QSqlDatabase::addDatabase ( const QString & type, const QString & connectionName = QLatin1String( defaultConnection ) ) ... If connectionName is not specified, the new connection becomes the default connection Цитировать QSqlQuery::QSqlQuery ( const QString & query = QString(), QSqlDatabase db = QSqlDatabase() ) ... Constructs a QSqlQuery object using the SQL query and the database db. If db is not specified, or is invalid, the application's default database is used Теперь проецируем это внимательно на код Код
Название: Re: Подключение к Mysql Отправлено: useruser от Октябрь 01, 2013, 20:41 Bepec - нет не пробовал. Попробую, но боюсь это не поможет. Тут что-то не так с подключением к БД.
Alex -я новичек и мало что понимаю. Делал всё по статье http://habrahabr.ru/post/51650/ Часть ошибок исправил сам. Как исправить эту не знаю. Так что скажите проще, что я не так сделал? Название: Re: Подключение к Mysql Отправлено: Old от Октябрь 01, 2013, 20:45 Уберите имя соединения из параметров addDatabase: mydb
Или добавьте его в параметры конструктора QSqlQuery. Название: Re: Подключение к Mysql Отправлено: useruser от Октябрь 01, 2013, 21:06 Old Большое cпасибо. Заработало. )
Ну и в догонку ещё вопрос - не подскажете по синтаксису, как вставить в SQL запрос переменные? query.exec("INSERT INTO records (record,time) VALUES ('myvar1','myvar2'); Название: Re: Подключение к Mysql Отправлено: gil9red от Октябрь 01, 2013, 22:08 Код: query.exec(QString("INSERT INTO records (record,time) VALUES ('%1','%2')") Название: Подключение к MySQL Отправлено: malor от Октябрь 09, 2013, 15:38 Делал всё по статье http://habrahabr.ru/post/51650/ Часть ошибок исправил сам. Какие там ещё ошибки? Кроме как с регистром букв (см. топик. error: 'QsqlDatabase' has not been declared (http://www.prog.org.ru/topic_25808_0.html)). Название: Re: Подключение к Mysql Отправлено: carrygun от Октябрь 10, 2013, 08:35 Код: query.exec(QString("INSERT INTO records (record,time) VALUES ('%1','%2')") Это, кстати, не лучший вариант. Помню год назад натыкался на определенные проблемы связанные с таким подходом. Лучше использовать bindValue() у QSqlQuery. Да и типы там автоматически определяются, не нужно писать всякие кавычки потом. UPD: вспомнил в чем была проблема, выглядело примерно так: Код Что-то в таком духе. |