86
87
88
89
90
91
92
93
|
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
int code = sqlite3_exec(_conn, SQL.UTF8String, NULL, NULL, NULL);
if (code != SQLITE_OK)
@throw [SL3ExecuteStatementFailedException
exceptionWithConnection: self
errorCode: code];
}
#ifdef OF_HAVE_BLOCKS
- (void)transactionWithBlock: (bool (^)(void))block
{
bool commit;
[self executeStatement: @"BEGIN TRANSACTION"];
@try {
commit = block();
} @catch (id e) {
[self executeStatement: @"ROLLBACK TRANSACTION"];
@throw e;
}
if (commit)
[self executeStatement: @"COMMIT TRANSACTION"];
else
[self executeStatement: @"ROLLBACK TRANSACTION"];
}
#endif
@end
|