crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
LNF
  опции профиля:
сообщение 7.9.2008, 15:52
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 2.9.2008
Пользователь №: 282

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




Репутация:   0  


Вот такой код:
QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory");
if(!db.open())
{
    QMessageBox::critical(
        this,
        tr("DataBase Error"),
        db.lastError().text()
    );
    return;
}


Получаю ошибку:
unable to open database file Error opening database

В SQLBrowser посмотрел доступные драйверы: QSQLITE и QODBC

Не могли бы подсказать в чем ошибка?

Сообщение отредактировал Admin - 7.9.2008, 16:55
Причина редактирования: Учимся использовать тэг [CODE]
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 7.9.2008, 15:55
Сообщение #2


Дмитрий Трошин
****

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

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




Репутация:   6  


попробую угадать.
если БД создается до инициализации QApplication, то будет такая ошибка.
если не угадал, плиз больше кода...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LNF
  опции профиля:
сообщение 7.9.2008, 16:10
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 2.9.2008
Пользователь №: 282

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




Репутация:   0  


QApplication инициализируется раньше.

В части одной функции у меня вызывается функция assembleAuthorSQL():
if(root.tagName()=="author")
{
    QDomNode first=root.firstChild();
    QDomNode last=root.lastChild();
    QString login=first.toElement().text();
    QString pwd=last.toElement().text();

    assembleAuthorSQL(login,pwd);

            QStringList menu;
            menu.append("menu");// root tag
            menu.append("Storage");
            menu.append("Settings");
            sendReply(assembleXml(menu));
}

// assembleAuthorSQL()

void Observer::assembleAuthorSQL(QString login,QString pwd)
{
    QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName(":memory");
    if(!db.open())
    {
        QMessageBox::critical(
            this,
            tr("DataBase Error"),
            db.lastError().text()
        );
        return;
    }
    else
    {
        QSqlQuery query("create table account(docid integer primary key,login varchar(30),password varchar(30))");
        query.exec();
        if (!query.isActive() )
                QMessageBox::warning(
                                this, 
                tr("Database Error"),
                                tr("Bolt")
            );
    }
}


Сообщение отредактировал Admin - 7.9.2008, 16:56
Причина редактирования: Учимся использовать тэг [CODE]
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 7.9.2008, 16:16
Сообщение #4


Дмитрий Трошин
****

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

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




Репутация:   6  


человече, я твой неформатный код читать не буду.
нука шустренько отредактировал свой пост, с применением тега "Код".
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LNF
  опции профиля:
сообщение 7.9.2008, 16:31
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 2.9.2008
Пользователь №: 282

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




Репутация:   0  


QApplication инициализируется раньше.

В части одной функции у меня вызывается функция assembleAuthorSQL():
if(root.tagName()=="author")
{
    QDomNode first=root.firstChild();
    QDomNode last=root.lastChild();
    QString login=first.toElement().text();
    QString pwd=last.toElement().text();

    assembleAuthorSQL(login,pwd);

    QStringList menu;
    menu.append("menu");// root tag
    menu.append("Storage");
    menu.append("Settings");
    sendReply(assembleXml(menu));
}

// assembleAuthorSQL()
void Observer::assembleAuthorSQL(QString login,QString pwd)
{
    QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName(":memory");
    if(!db.open())
    {
        QMessageBox::critical(
             this,
             tr("DataBase Error"),
             db.lastError().text()
         );
         return;
     }
     else
    {
        QSqlQuery query("create table account(docid integer primary key,login varchar(30),password varchar(30))");
        query.exec();
        if (!query.isActive() )
           QMessageBox::warning(
                this, 
                tr("Database Error"),
                tr("Bolt")
            );
     }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.9.2008, 19:55
Сообщение #6


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

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

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




Репутация:   94  


LNF, проверь, работает ли у тебя пример: %QTDIR%\examples\sql\cachedtable
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 3.6.2025, 11:03