crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> передача объекта QSqlDatabase по указателю
call_me_Frank
  опции профиля:
сообщение 14.12.2011, 14:39
Сообщение #1


Студент
*

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

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




Репутация:   0  


привет!

ситуация такая:
БД объявлена в классе, как QSqlDatabase mdb;
в одной из ф-ий класса она инициализируется и коннектится, после чего её надо кинуть в другую ф-ию для выполнения запросов:

void u::login(){
...
    mdb.addDatabase("QSQLITE");
    mdb.setDatabaseName(":memory:");

    mdb.open();
...
    constr(&mdb)
}

....

void constr(QSqlDatabase* db){

    QSqlQuery q(*db);

    q.exec("SQL запрос");
}


Debugger говорит: "QSqlQuery::exec: database not open"...

ребята, подскажите, как правильно передать БД в функцию?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
sidsukana
  опции профиля:
сообщение 14.12.2011, 15:14
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 158
Регистрация: 23.12.2010
Из: Челябинск
Пользователь №: 2296

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




Репутация:   2  


QSqlDatabase это синглтон. Зачем передавать указатель? И таскать за собой его?

Создаете экземпляр вот так
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "somename");
db.setHostName(name);
db.setPort(port);
db.setUserName(user);
db.setPassword(pass);
db.setDatabaseName(dbname);
db.open();
// Обратите внимание что somename != dbname. somename любое название базы для вашего удобства пользования ей именно в коде программы


Далее в любом месте программы создаем запрос так
QSqlQuery query(QSqlDatabase::database("somename"));
// Ну и далее как обычно - запрос будет выполнен на эту базу.


Сообщение отредактировал sidsukana - 14.12.2011, 15:14
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
call_me_Frank
  опции профиля:
сообщение 14.12.2011, 15:36
Сообщение #3


Студент
*

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

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




Репутация:   0  


спасибо, такого я не знал!...но

вот что пишет

QSqlDatabasePrivate::database: unable to open database: " "

видимо что-то еще я не правильно сделал

все, заработало!

требовалось изменить

db.addDatabase(); на db = QSqlDatabase::addDatabase();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.3.2024, 22:25