![]() |
#20 |
Участник
|
Когда мне надоело каждый раз писать обёртку 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. |
|