Название: Что я неправильно делаю в простейшем коде? Отправлено: gidrowolf от Ноябрь 15, 2009, 22:29 Вот код содранный из примера, но в примере все работает а у меня нет.
Цитировать #include <QtSql> #include <QMessageBox> #include "test.h" #include "ui_test.h" QSqlDatabase db; QSqlQuery query; QSqlRelationalTableModel model; test::test(QWidget *parent) : QMainWindow(parent), ui(new Ui::test) { ui->setupUi(this); db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName(":memory:"); if (!db.open()) { QMessageBox::critical(0, qApp->tr("Cannot open database"), qApp->tr("Unable to establish a database connection.\n" "Click Cancel to exit."), QMessageBox::Cancel); } query.exec("create table employee(id int primary key, name varchar(20), city int, country int)"); query.exec("insert into employee values(1, 'Espen', 5000, 47)"); query.exec("insert into employee values(2, 'Harald', 80000, 49)"); query.exec("insert into employee values(3, 'Sam', 100, 1)"); query.exec("create table city(id int, name varchar(20))"); query.exec("insert into city values(100, 'San Jose')"); query.exec("insert into city values(5000, 'Oslo')"); query.exec("insert into city values(80000, 'Munich')"); query.exec("create table country(id int, name varchar(20))"); query.exec("insert into country values(1, 'USA')"); query.exec("insert into country values(47, 'Norway')"); query.exec("insert into country values(49, 'Germany')"); model.setTable("employee"); model.select(); ui->tableView->setModel(&model); } test::~test() { delete ui; } Да еще какието ошибки непонятные: Цитировать Запускается G:\DATABASE\test\debug\test.exe... QSqlQuery::exec: database not open QSqlQuery::exec: database not open QSqlQuery::exec: database not open QSqlQuery::exec: database not open QSqlQuery::exec: database not open QSqlQuery::exec: database not open QSqlQuery::exec: database not open QSqlQuery::exec: database not open QSqlQuery::exec: database not open QSqlQuery::exec: database not open QSqlQuery::exec: database not open QSqlQuery::exec: database not open QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work. G:\DATABASE\test\debug\test.exe завершилась с кодом 0 Вроде все делаю как надо, и вроде как все элементарно. Чего я непонимаю? Название: Re: Что я неправильно делаю в простейшем коде? Отправлено: nixman05 от Ноябрь 15, 2009, 23:27 Вначале
Код
После открытия базы Код
Название: Re: Что я неправильно делаю в простейшем коде? Отправлено: Makss от Ноябрь 15, 2009, 23:34 эти варнинги что вивелись, они выводятся вот в этих строках кода
Код: query.exec("create table employee(id int primary key, name varchar(20), city int, country int)"); в варнингах написано что база не была открыта Лудше QSqlQuery делать локальной переменной, т.к. они у вас обе глобальные, Код: QSqlDatabase db; Название: Re: Что я неправильно делаю в простейшем коде? Отправлено: gidrowolf от Ноябрь 15, 2009, 23:52 Вначале Код
После открытия базы Код
Огромное спасибо, ты прям озарил меня :). Просто в примере "relationaltablemodel" нигде нет таких строчек и я думал еще откуда прога знает с какой БД я хочу работать. И как интерено работает пример "relationaltablemodel" без этого указания о_О. Название: Re: Что я неправильно делаю в простейшем коде? Отправлено: lit-uriy от Ноябрь 16, 2009, 04:41 >>И как интерено работает пример "relationaltablemodel" без этого указания о_О.
пытается работать с соединением по умолчанию. соединение создаётся и открывается с помощью класса QSqlDataBase |