crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Сколько нужно QSqlDatabase на проэкт ?
potkin
  опции профиля:
сообщение 26.8.2010, 20:59
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

Спасибо сказали: 0 раз(а)




Репутация:   0  


Сколько нужно QSqlDatabase на проэкт ???
QSqlDatabase db = QSqlDatabase::addDatabase(ui->cBServer->currentText());
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 26.8.2010, 21:17
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2895
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


А в чём подвох ? :)
Напиши более развёрнуто мысль свою
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 26.8.2010, 22:12
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

Спасибо сказали: 0 раз(а)




Репутация:   0  


//00000000000
    QSqlDatabase db = QSqlDatabase::addDatabase(ui->cBServer->currentText());
    db.setHostName(ui->lEHostName->text());
    db.setDatabaseName(ui->lEDatabaseName->text());
    db.setUserName(ui->lEUserName->text());
    db.setPassword(ui->lEPasswor->text());

//11111111111
    QSqlTableModel *model;
    model = new QSqlTableModel();
    model->setTable("question");
    model->filter();
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
   if (model->select())
    {
       model->setHeaderData(0, Qt::Horizontal, tr("questionID"));
       model->setHeaderData(1, Qt::Horizontal, tr("urgency"));
       ui->tVQuestions->setModel(model);
       ui->tVQuestions->resizeColumnsToContents();
    }
    else QMessageBox::warning(this, tr("Cached Table"), tr("The database reported an error: %1").arg(model->lastError().text()));

//22222222222
    QSqlDatabase db1 = QSqlDatabase::addDatabase(ui->cBServer->currentText());
    db1.setHostName(ui->lEHostName->text());
    db1.setDatabaseName(ui->lEDatabaseName->text());
    db1.setUserName(ui->lEUserName->text());
    db1.setPassword(ui->lEPasswor->text());

    QSqlQuery query(db1);
    if(db1.open())
    {
        query.exec("SELECT questionurgencyID, name FROM questionurgency");
        while (query.next()) ui->cBurgency->addItem(query.value(1).toString(), query.value(0).toString());
        db1.close();
    }
    else QMessageBox::warning(this, tr("Cached Table"), tr("The database reported an error: %1").arg("DB:"+db1.lastError().text()+", QUERY:"+query.lastError().text()));


Вследситвии такого кода, в таблице ячейки будут не заполнеными.

Тоесть,е сли у меня в таблице "question" 2-е записи, то в таблице "ui->tVQuestions" появятся 2-е строки с заполнеными ячейками. Но после выполнения кода:
 QSqlDatabase db1 = QSqlDatabase::addDatabase(ui->cBServer->currentText());

Две строки останутся, но ячейки станут пустые :(

Сообщение отредактировал potkin - 26.8.2010, 22:13
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 27.8.2010, 8:02
Сообщение #4


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Есть такой необязательный параметр как имя соединения следующий за названием драйвера в функции addDatabase используй его. Ибо по умолчанию ставится название qt_sql_default_connection
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 27.8.2010, 9:21
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

Спасибо сказали: 0 раз(а)




Репутация:   0  


molchanoviv,
Спасибо, всё заработало :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.8.2010, 19:36
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


вообще практика простая:
создаём соединение, где-то и заранее:
QSqlDatabase db1 = QSqlDatabase::addDatabase("тут имя драйвера");

используем потом где-то
QSqlDatabase db1 = QSqlDatabase::database();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
CodeHunter
  опции профиля:
сообщение 18.10.2010, 9:55
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 26.8.2010
Пользователь №: 1982

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 27.8.2010, 19:36) *
используем потом где-то?
QSqlDatabase db1 = QSqlDatabase::database();



Ага, а попробуй сделать так в много поточной программе.. Я посмотрю что ты получишь !! :lol2:
Тут все зависит от архитектуры приложения !

Сообщение отредактировал CodeHunter - 18.10.2010, 9:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 18.10.2010, 11:55
Сообщение #8


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(CodeHunter)
Ага, а попробуй сделать так в много поточной программе.. Я посмотрю что ты получишь !!
Тут все зависит от архитектуры приложения !
Что за очередной дурацкий комментарий? Если ты не читаешь документации и пытаешься использовать соединение с БД созданном в одном потоке из другого, то это твои проблемы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
CodeHunter
  опции профиля:
сообщение 18.10.2010, 13:06
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 26.8.2010
Пользователь №: 1982

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 27.8.2010, 19:36) *
создаём соединение, где-то и заранее:

Где-то может быть где угодно !
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.5.2020, 23:55