Russian Qt Forum
Ноябрь 24, 2024, 00:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Решено: Не получается создать таблицу.  (Прочитано 4315 раз)
vldefender
Гость
« : Июнь 15, 2009, 06:40 »

Добрый день, у меня не получается создать таблицу.
Код
C++ (Qt)
#include <MySql/mysql.h>
#include <QtSql/qsql.h>
#include <QtSql/qsqldriver.h>
#include <QtSql/qsqldatabase.h>
#include <QtSql/qsqlquery.h>
#include <QtSql/qsqlerror.h>
#include <QtSql/qsqltablemodel.h>
...
void uvd::connectMysql(QString account, QString password)
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "mydb");
db.setHostName("localhost");
db.setDatabaseName("db1");
db.setUserName(account);
db.setPassword(password);
bool connected = db.open();
if (!connected)
QMessageBox::critical(this, QObject::tr("Database Error"), db.lastError().text());
}
 
void uvd::createTables()
{
   QSqlQuery query = QSqlQuery();
   query.exec("create table ovd1(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(40) NOT NULL, phone SMALLINT)");
}
 
В чём моя ошибка?
« Последнее редактирование: Июнь 15, 2009, 11:27 от vldefender » Записан
ритт
Гость
« Ответ #1 : Июнь 15, 2009, 07:51 »

Цитировать
-    QSqlQuery query = QSqlQuery();
+    QSqlQuery query = QSqlQuery(QSqlDatabase::database("mydb"));
Записан
Karl-Philipp
Гость
« Ответ #2 : Июнь 15, 2009, 08:05 »

Цитировать
-    QSqlQuery query = QSqlQuery();
+    QSqlQuery query = QSqlQuery(QSqlDatabase::database("mydb"));
Константин, объясни, пожалуйста:
если я правильно понял, в коде используется конструктор, приведённый ниже

Цитировать
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, the application's default database is used. If query is not an empty string, it will be executed.

Если БД не определена, используется БД приложения по умлочанию. По умолчанию выходит у нас есть база mydb.
Вроде бы должно выполняться корректно в mydb. Где я неправ?
Записан
Barmaglodd
Гость
« Ответ #3 : Июнь 15, 2009, 08:41 »

В этом случае по умолчанию ничего нет.
Если бы написали
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
, то она бы была по умолчанию.
А так напрямую имя задали, по нему и обращаться.
Записан
Karl-Philipp
Гость
« Ответ #4 : Июнь 15, 2009, 08:53 »

спасибо Улыбающийся
Записан
vldefender
Гость
« Ответ #5 : Июнь 15, 2009, 11:26 »

Константин, Barmaglodd, спасибо Улыбающийся.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.073 секунд. Запросов: 20.