AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.07.2017, 07:18   #20  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
650 / 352 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Когда мне надоело каждый раз писать обёртку try/catch со всякими assert permissions, я написал вот такой класс. В принципе - этого более чем достаточно для работы на чистом SQL. Думаю, код написан достаточно прозрачно, поясню только, что статические методы нужно использовать, если Connection и Statement не понадобятся при дальнейшем использовании. В противном случае, лучше создать экземпляр класса и использовать одно подключение, пока не закончим работать на SQL.
X++:
final class PPO_SafeSQL
{
    #define.InsufficientRights("Недостаточно прав для выполнения операции")

    Connection  connection;
    Statement   statement;
}

public void new()
{
;
    connection  = new Connection();
    statement   = connection.createStatement();
}

public server static ResultSet runQuery(str _sql)
{
    return new PPO_SafeSQL().executeQuery(_sql);
}

public server static void runUpdate(str _sql)
{
    new PPO_SafeSQL().executeUpdate(_sql);
}

public ResultSet executeQuery(str _sql)
{
    ResultSet ret;

    try
    {
        new SqlStatementExecutePermission(_sql).assert();

        // BP deviation documented
        ret = statement.executeQuery(_sql);

        CodeAccessPermission::revertAssert();
    }
    catch (Exception::CodeAccessSecurity)
    {
        throw error(#InsufficientRights);
    }

    return ret;
}

public void executeUpdate(str _sql)
{
    try
    {
        new SqlStatementExecutePermission(_sql).assert();

        // BP deviation documented
        statement.executeUpdate(_sql);

        CodeAccessPermission::revertAssert();
    }
    catch (Exception::CodeAccessSecurity)
    {
        throw error(#InsufficientRights);
    }
}
__________________
// no comments

Последний раз редактировалось dech; 07.07.2017 в 07:27.
Теги
download, законченный пример, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как лучше оформлять несколько условий в select where? Повторная попытка mazzy DAX: Программирование 10 27.06.2011 13:54
Как лучше оформлять несколько условий в select where? mazzy DAX: Программирование 32 24.06.2011 20:40
Axapta 3.0 - можно ли править классы в USR слое AKIS DAX: Программирование 3 07.02.2004 01:19
Передача условий в отчет ArturK DAX: Программирование 4 18.08.2003 22:56
Системные классы Swetik DAX: Функционал 2 03.07.2003 12:11

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:01.