Overview
Context
Changes
Modified src/SL3Connection.h
from [e3ea62406e]
to [ed6985053c].
︙ | | |
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
-
+
-
+
-
+
-
+
-
-
+
+
|
#ifdef SL3_PUBLIC_IVARS
@public
#endif
sqlite3 *_conn;
}
/**
* @brief Creates a new connection to the database at the specified path.
* @brief Creates a new connection to the database at the specified IRI.
*
* @param path The path to the database
* @param IRI The IRI to the database
* @return A new database connection
* @throw SL3OpenFailedException The database could not be opened
*/
+ (instancetype)connectionWithPath: (OFString *)path;
+ (instancetype)connectionWithIRI: (OFIRI *)IRI;
/**
* @brief Creates a new connection to the database at the specified path.
* @brief Creates a new connection to the database at the specified IRI.
*
* @param path The path to the database
* @param IRI The IRI to the database
* @param flags The flags to open the database with
* @return A new database connection
* @throw SL3OpenFailedException The database could not be opened
*/
+ (instancetype)connectionWithPath: (OFString *)path
+ (instancetype)connectionWithIRI: (OFIRI *)IRI flags: (int)flags;
flags: (int)flags;
/**
* @brief Initializes an already allocated connection to connect to the
* database at the specified path.
* database at the specified IRI.
*
* @param path The path to the database
* @param IRI The IRI to the database
* @return An initialized connection to the specified database
* @throw SL3OpenFailedException The database could not be opened
*/
- (instancetype)initWithPath: (OFString *)path;
- (instancetype)initWithIRI: (OFIRI *)IRI;
/**
* @brief Initializes an already allocated connection to connect to the
* database at the specified path.
* database at the specified IRI.
*
* @param path The path to the database
* @param IRI The IRI to the database
* @param flags The flags to open the database with
* @return An initialized connection to the specified database
* @throw SL3OpenFailedException The database could not be opened
*/
- (instancetype)initWithPath: (OFString *)path
flags: (int)flags OF_DESIGNATED_INITIALIZER;
- (instancetype)initWithIRI: (OFIRI *)IRI
flags: (int)flags OF_DESIGNATED_INITIALIZER;
/**
* @brief Prepares the specified SQL statement for the connection and returns
* it.
*
* @param SQLStatement An SQL statement to prepare
* @return A prepared statement
|
︙ | | |
Modified src/SL3Connection.m
from [8fccf2b938]
to [b3de083fad].
︙ | | |
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
-
+
-
+
-
+
-
-
+
-
-
+
-
-
+
+
-
+
-
-
+
+
-
-
-
+
+
+
|
#import "SL3PreparedStatement.h"
#import "SL3PreparedStatement+Private.h"
#import "SL3ExecuteStatementFailedException.h"
#import "SL3OpenFailedException.h"
@implementation SL3Connection
+ (instancetype)connectionWithPath: (OFString *)path
+ (instancetype)connectionWithIRI: (OFIRI *)IRI
{
return [[[self alloc] initWithPath: path] autorelease];
return [[[self alloc] initWithIRI: IRI] autorelease];
}
+ (instancetype)connectionWithPath: (OFString *)path
+ (instancetype)connectionWithIRI: (OFIRI *)IRI flags: (int)flags
flags: (int)flags
{
return [[[self alloc] initWithPath: path
return [[[self alloc] initWithIRI: IRI flags: flags] autorelease];
flags: flags] autorelease];
}
- (instancetype)initWithPath: (OFString *)path
- (instancetype)initWithIRI: (OFIRI *)IRI
{
return [self initWithPath: path
flags: SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE];
return [self initWithIRI: IRI
flags: SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE];
}
- (instancetype)initWithPath: (OFString *)path
- (instancetype)initWithIRI: (OFIRI *)IRI flags: (int)flags
flags: (int)flags
{
self = [super init];
@try {
int code = sqlite3_open_v2(path.UTF8String, &_conn, flags,
int code = sqlite3_open_v2(
IRI.fileSystemRepresentation.UTF8String, &_conn, flags,
NULL);
if (code != SQLITE_OK)
@throw [SL3OpenFailedException exceptionWithPath: path
flags: flags
errorCode: code];
@throw [SL3OpenFailedException exceptionWithIRI: IRI
flags: flags
errorCode: code];
} @catch (id e) {
[self release];
@throw e;
}
return self;
}
|
︙ | | |
Modified src/exceptions/SL3OpenFailedException.h
from [f58ebd31b2]
to [c4cd83e10c].
︙ | | |
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
-
+
-
+
-
+
-
+
-
-
-
+
+
+
-
+
-
-
-
+
+
+
|
* @class SL3OpenFailedException SL3OpenFailedException.h
* ObjSQLite3/ObjSQLite3.h
*
* @brief An exception indicating that a database could not be opened.
*/
@interface SL3OpenFailedException: SL3Exception
{
OFString *_path;
OFIRI *_IRI;
int _flags;
}
/**
* @brief The path of the database that could not be opened.
* @brief The IRI of the database that could not be opened.
*/
@property (readonly, nonatomic) OFString *path;
@property (readonly, nonatomic) OFIRI *IRI;
/**
* @brief The flags with which the database could not be opened.
*/
@property (readonly, nonatomic) int flags;
+ (instancetype)exceptionWithConnection: (nullable SL3Connection *)connection
errorCode: (int)errorCode OF_UNAVAILABLE;
/**
* @brief Creates a new open failed exception.
*
* @param path The path of the database that could not be opened
* @param IRI The IRI of the database that could not be opened
* @param flags The flags with which the database could not be opened
* @param errorCode The SQLite3 error code
* @return A new, autoreleased open failed exception
*/
+ (instancetype)exceptionWithPath: (OFString *)path
flags: (int)flags
errorCode: (int)errorCode;
+ (instancetype)exceptionWithIRI: (OFIRI *)IFI
flags: (int)flags
errorCode: (int)errorCode;
- (instancetype)initWithConnection: (nullable SL3Connection *)connection
errorCode: (int)errorCode OF_UNAVAILABLE;
/**
* @brief Initializes an already allocated open failed exception.
*
* @param path The path of the database that could not be opened
* @param IRI The IRI of the database that could not be opened
* @param flags The flags with which the database could not be opened
* @param errorCode The SQLite3 error code
* @return An initialized open failed exception
*/
- (instancetype)initWithPath: (OFString *)path
flags: (int)flags
errorCode: (int)errorCode OF_DESIGNATED_INITIALIZER;
- (instancetype)initWithIRI: (OFIRI *)IRI
flags: (int)flags
errorCode: (int)errorCode OF_DESIGNATED_INITIALIZER;
@end
OF_ASSUME_NONNULL_END
|
Modified src/exceptions/SL3OpenFailedException.m
from [eb7e770ec5]
to [7482a8b05e].
︙ | | |
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
+
-
+
|
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#import "SL3OpenFailedException.h"
@implementation SL3OpenFailedException
@synthesize path = _path, flags = _flags;
@synthesize IRI = _IRI, flags = _flags;
+ (instancetype)exceptionWithConnection: (SL3Connection *)connection
errorCode: (int)errorCode
{
OF_UNRECOGNIZED_SELECTOR
}
+ (instancetype)exceptionWithPath: (OFString *)path
flags: (int)flags
errorCode: (int)errorCode
+ (instancetype)exceptionWithIRI: (OFIRI *)IRI
flags: (int)flags
errorCode: (int)errorCode
{
return [[[self alloc] initWithPath: path
flags: flags
errorCode: errorCode] autorelease];
return [[[self alloc] initWithIRI: IRI
flags: flags
errorCode: errorCode] autorelease];
}
- (instancetype)initWithConnection: (SL3Connection *)connection
errorCode: (int)errorCode
{
OF_INVALID_INIT_METHOD
}
- (instancetype)initWithPath: (OFString *)path
flags: (int)flags
errorCode: (int)errorCode
- (instancetype)initWithIRI: (OFIRI *)IRI
flags: (int)flags
errorCode: (int)errorCode
{
self = [super initWithConnection: nil
errorCode: errorCode];
@try {
_path = [path copy];
_IRI = [IRI copy];
_flags = flags;
} @catch (id e) {
[self release];
@throw e;
}
return self;
}
- (void)dealloc
{
[_path release];
[_IRI release];
[super dealloc];
}
@end
|
Modified tests/Tests.m
from [620287316c]
to [810ff17bbb].
︙ | | |
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
+
-
-
+
+
-
+
|
@end
OF_APPLICATION_DELEGATE(Tests)
@implementation Tests
- (void)applicationDidFinishLaunching: (OFNotification *)notification
{
OFIRI *IRI = [OFIRI fileIRIWithPath: @"tests.db"];
OFFileManager *fileManager = [OFFileManager defaultManager];
SL3Connection *conn;
SL3PreparedStatement *stmt;
if ([fileManager fileExistsAtPath: @"tests.db"])
[fileManager removeItemAtPath: @"tests.db"];
if ([fileManager fileExistsAtIRI: IRI])
[fileManager removeItemAtIRI: IRI];
conn = [SL3Connection connectionWithPath: @"tests.db"];
conn = [SL3Connection connectionWithIRI: IRI];
[conn executeStatement: @"CREATE TABLE test (a INT, b TEXT, c BLOB)"];
stmt = [conn prepareStatement:
@"INSERT INTO test (a, b, c) VALUES ($a, $b, $c)"];
[stmt bindWithArray: [OFArray arrayWithObjects:
[OFNumber numberWithInt: 5],
|
︙ | | |