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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Решено: Не получается создать таблицу.  (Прочитано 4430 раз)
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.032 секунд. Запросов: 17.