crossplatform.ru

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


  Ответ в Проблема добавления/удаления из Базы данных
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
svetlana Дата 13.10.2008, 20:35
 
Цитата(Litkevich Yuriy @ 13.10.2008, 20:02) *
ну да так, одно неудобно query вернет длинное сообщение:
Сообщение от query, от QODBC, от ODBC драйвера БД. Рекомендую посмотреть в сторону класса QSqlError, с помощью него можно конкретное сообщение попытатся вытянуть, что удобнее для пользователя.


Да, ты прав)

лучше будет
query.lastError().databaseText();


но там все равно много лишнего текста)
Litkevich Yuriy Дата 13.10.2008, 20:02
  ну да так, одно неудобно query вернет длинное сообщение:
Сообщение от query, от QODBC, от ODBC драйвера БД. Рекомендую посмотреть в сторону класса QSqlError, с помощью него можно конкретное сообщение попытатся вытянуть, что удобнее для пользователя.
svetlana Дата 13.10.2008, 19:55
  в общем, сама спросила, сама отвечаю :blink:

bool cDataBase::DelUser(int id)
{
    QSqlQuery query(m_database);
    query.setForwardOnly(true);
    query.prepare("{call DelUser (?, ?)}");
    query.addBindValue(QVariant(id));
    query.addBindValue(QVariant(m_userID));
    if (!query.exec())
    {
        QMessageBox msgBox(QMessageBox::Warning, tr("Ошибка"), 
            query.lastError().text(), QMessageBox::Ok);
        msgBox.exec();
        return FALSE;
    }
    return TRUE;
}
svetlana Дата 13.10.2008, 19:39
 
Цитата(Litkevich Yuriy @ 13.10.2008, 19:24) *
Цитата(Гость_svetlana_* @ 13.10.2008, 23:22) *
как ловить исключения брошенный из базы?
в каком смылсе ловить?


ну как в каком?)
ну вот что-то типа этого
try 
{
            QSqlQuery query(m_database); 
    query.setForwardOnly(true);
    query.prepare("{call AddRight(?, ?, ?, ?, ?)}"); 
    query.addBindValue(QVariant(rightData->m_ID));
    query.addBindValue(QVariant(rightData->m_rightName)); 
    query.addBindValue(QVariant(rightData->m_description));
    query.addBindValue(QVariant(rightData->m_isAvailable));
    query.addBindValue(QVariant(m_userID)); 
    query.exec();
}
catch(...)
{
     //  а здесь пусть будет 
     QMessageBox("Ошибка выброшенная из базы...");
}

какой фильтр надо поставить в catch?
в базе это делается строчкой
Raiserror('У пользователя, от чьего имени производятся изменения, нет соответствующих прав',16,1)
Litkevich Yuriy Дата 13.10.2008, 19:24
 
Цитата(Гость_svetlana_* @ 13.10.2008, 23:22) *
как ловить исключения брошенный из базы?
в каком смылсе ловить?
svetlana Дата 13.10.2008, 19:22
  да, там только этому и учать) больше ничему)

а еще вопрос...
как ловить исключения брошенный из базы?
AD Дата 13.10.2008, 19:13
  [OFFTOP], конечно же, но именно этому в универе ведь и учат. Находить нужную литературу. :) Разве не так? :)[/OFFTOP]

По теме: А в чем отличия будут? Какие еще действия надо сделать, чтобы вызывать процедуры? Поделитесь, пожалуйста, опытом! :)
svetlana Дата 13.10.2008, 19:04
  да, видимо)
видимо, перед тем как учиться программировать, надо было научиться читать ;)
Tonal Дата 13.10.2008, 19:00
  Видимо нужно читать про синтаксис вызова сохранёнок в твоём сервере. :)
Litkevich Yuriy Дата 13.10.2008, 18:58
  а вызов хранимых процедур слово VALUE не использует, да и фигурные скобки там вроде не нужны, вот пример из Асистента:
     QSqlQuery query;
     query.prepare("CALL AsciiToInt(?, ?)");
     query.bindValue(0, "A");
     query.bindValue(1, 0, QSql::Out);
     query.exec();
     int i = query.boundValue(1).toInt(); // i is 65


Т.е. у тебя должно быть так
QSqlQuery query(m_database);
query.setForwardOnly(true);
query.prepare("call DelRight (?, ?)");
query.addBindValue(QVariant(id));
query.addBindValue(QVariant(m_userID));
query.exec();
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 4.7.2025, 23:24