diff options
author | Nicholas Tsoi-A-Sue <nicktsue@google.com> | 2020-06-10 11:58:16 -0700 |
---|---|---|
committer | Thomas Van Lenten <thomasvl@google.com> | 2020-06-10 15:16:36 -0400 |
commit | 960dd6068bb7f98d31808a223f4de081efa57e0f (patch) | |
tree | d78cb4d19aec8efebbf5cf698cf4015522aa308e | |
parent | 1902ad87111e7e1e8ad7b21f515697c91e4427f2 (diff) |
Create interface for initializing DB with SQLite flags
-rw-r--r-- | Foundation/GTMSQLite.h | 25 | ||||
-rw-r--r-- | Foundation/GTMSQLite.m | 14 |
2 files changed, 38 insertions, 1 deletions
diff --git a/Foundation/GTMSQLite.h b/Foundation/GTMSQLite.h index 0daa02c..883c903 100644 --- a/Foundation/GTMSQLite.h +++ b/Foundation/GTMSQLite.h @@ -122,6 +122,29 @@ // + (NSString *)sqliteVersionString; +// Open a database instance on a file-based database. +// +// Args: +// path: Path to the database. If it does not exist, an empty database will be created only if +// the SQLITE_OPEN_CREATE flag is specified. +// withCFAdditions: If true, the SQLite database will include CFString +// based string functions and collation sequences. See +// the class header for information on these differences +// and performance impact. +// utf8: If true, the path argument is interpreted as UTF-8. If false, it's interpreted as +// UTF-16 in the native byte order. +// flags: The SQLite flags to use when opening a DB file (e.g. SQLITE_OPEN_READWRITE). This +// argument is ignored if utf8 is false. +// err: Result code from SQLite. If nil is returned by this function +// check the result code for the error. If NULL no result code is +// reported. +// +- (id)initWithPath:(NSString *)path + withCFAdditions:(BOOL)additions + utf8:(BOOL)useUTF8 + flags:(int)flags + errorCode:(int *)err; + // Create and open a database instance on a file-based database. // // Args: @@ -131,6 +154,8 @@ // based string functions and collation sequences. See // the class header for information on these differences // and performance impact. +// utf8: If true, the path argument is interpreted as UTF-8. If false, it's interpreted as +// UTF-16 in the native byte order. // err: Result code from SQLite. If nil is returned by this function // check the result code for the error. If NULL no result code is // reported. diff --git a/Foundation/GTMSQLite.m b/Foundation/GTMSQLite.m index aa5d5f5..d3add68 100644 --- a/Foundation/GTMSQLite.m +++ b/Foundation/GTMSQLite.m @@ -133,13 +133,14 @@ static CFLocaleRef gCurrentLocale = NULL; - (id)initWithPath:(NSString *)path withCFAdditions:(BOOL)additions utf8:(BOOL)useUTF8 + flags:(int)flags errorCode:(int *)err { int rc = SQLITE_INTERNAL; if ((self = [super init])) { path_ = [path copy]; if (useUTF8) { - rc = sqlite3_open([path_ fileSystemRepresentation], &db_); + rc = sqlite3_open_v2([path_ fileSystemRepresentation], &db_, flags, NULL); } else { CFStringEncoding cfEncoding; #if TARGET_RT_BIG_ENDIAN @@ -185,6 +186,17 @@ static CFLocaleRef gCurrentLocale = NULL; return self; } +- (id)initWithPath:(NSString *)path + withCFAdditions:(BOOL)additions + utf8:(BOOL)useUTF8 + errorCode:(int *)err { + return [self initWithPath:path + withCFAdditions:additions + utf8:useUTF8 + flags:SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE + errorCode:err]; +} + - (id)initInMemoryWithCFAdditions:(BOOL)additions utf8:(BOOL)useUTF8 errorCode:(int *)err { |