Russian Qt Forum

Qt => Базы данных => Тема начата: MoHaX от Апрель 26, 2010, 22:31



Название: Помогите с добавлением таблиц в бд
Отправлено: MoHaX от Апрель 26, 2010, 22:31
Не могу добавить таблицы в бд. Сервер PostgreSQL Database Server 8.0. База создается,но таблиц нет. Подскажите,если можно поподробней,т.к только начинаю знакомиться с QT.
Код:
#include <QtCore/QCoreApplication>

#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlError>
#include <QtSql/QSqlQuery>
#include <iostream>

int main(int argc, char** argv)
{
    QSqlDatabase db=QSqlDatabase::addDatabase("QPSQL");
              db.setHostName("localhost");
              db.setPort(5432);
              db.setDatabaseName("template1");
              db.setUserName("postgres");
              db.setPassword("pasw");
                      db.open();
                QSqlQuery query(db);
                query.exec("CREATE DATABASE myDb;");      
                query.exec("CREATE TABLE scooter ("
                           "id INTEGER PRIMARY KEY AUTOINCREMENT, "
                           "name VARCHAR(40) NOT NULL, "
                           "maxspeed INTEGER NOT NULL, "
                           "maxrange INTEGER NOT NULL, "
                           "weight INTEGER NOT NULL, "
                           "description VARCHAR(80) NOT NULL)");
                     return 0;
}


Название: Re: Помогите с добавлением таблиц в бд
Отправлено: alexman от Апрель 26, 2010, 22:34
А что возвращает query.lastError().text() после query.exec(...)?


Название: Re: Помогите с добавлением таблиц в бд
Отправлено: Chase от Апрель 26, 2010, 22:46
Цитировать
db.setDatabaseName("template1");

Вы создаете таблицу в этой базе, а не в myDb


Название: Re: Помогите с добавлением таблиц в бд
Отправлено: Пантер от Апрель 27, 2010, 06:16
Ага. После создания базы необходимо переконнектиться. Плюс еще проверяй на открытие, а то всяко бывает...
Код
C++ (Qt)
if (!db.open()) {
 qDebug () << db.lastError ().text ();
}
 


Название: Re: Помогите с добавлением таблиц в бд
Отправлено: MoHaX от Апрель 27, 2010, 17:22
вроде понятно,сначала я подключаюсь к бд template1 и создаю бд mybd.Затем мне нужно подключиться к бд mybd и уже добавлять данные.Выходит будет 2 одинаковых участка в коде(1 для подключения к template1,другой для mybd)?Как это разумно прописать?