· 8 years ago · Jun 15, 2018, 01:58 AM
1#import "SqlDB.h"
2
3@implementation SqlDB
4@synthesize returnedValues;
5
6-(void)createDB
7{
8 if(sqlite3_open([[self filePath] UTF8String], &database) != SQLITE_OK)
9 {
10 sqlite3_close(database);
11 }
12
13 char *errorMsg;
14
15 NSString *createSQL = @"CREATE TABLE IF NOT EXISTS ENTRY (entryID INTEGER PRIMARY KEY AUTOINCREMENT, entryDate TEXT, entryTitle TEXT, entryContext TEXT, entryImage TEXT)";
16
17 if(sqlite3_exec (database, [createSQL UTF8String], NULL, NULL, &errorMsg) != SQLITE_OK)
18 {
19 NSAssert1(0,@"Error creating table: %s", errorMsg);
20 }
21 sqlite3_close(database);
22}
23
24-(NSString *)filePath
25{
26 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
27 NSString *documentsDir = [paths objectAtIndex:0];
28 return [documentsDir stringByAppendingPathComponent:dbFilename];
29}
30
31-(void)openDB
32{
33 if(sqlite3_open([[self filePath] UTF8String], &database) != SQLITE_OK)
34 {
35 sqlite3_close(database);
36 }
37}
38
39-(void)sqlInsert:(NSArray *)insertValues
40{
41 [self openDB];
42
43 NSString *todayDate = [insertValues objectAtIndex:0];
44 NSString *addTitle = [insertValues objectAtIndex:1];
45 NSString *addContext = [insertValues objectAtIndex:2];
46 NSString *addImageName = [insertValues objectAtIndex:3];
47
48 NSString *insert = [[NSString alloc] initWithFormat:@"INSERT INTO entry (entryDate, entryTitle, entryContext, entryImage) VALUES ('%@', '%@', '%@', '%@');", todayDate, addTitle, addContext, addImageName];
49
50 char *errorMsg;
51
52 if(sqlite3_exec(database, [insert UTF8String], NULL, NULL, &errorMsg) != SQLITE_OK)
53 {
54 NSAssert1(0,@"Error updating tables: %s", errorMsg);
55 }
56
57 [insert release];
58 sqlite3_close(database);
59}
60
61-(NSArray *)sqlSelectAll
62{
63 [self openDB];
64
65 NSString *query = @"SELECT entryTitle, entryContext, entryImage FROM ENTRY ORDER BY entryDate DESC LIMIT 1";
66
67 sqlite3_stmt *statement;
68
69 if(sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil) == SQLITE_OK)
70 {
71 while(sqlite3_step(statement) == SQLITE_ROW)
72 {
73 char *title = (char *)sqlite3_column_text(statement, 0);
74 char *context = (char *)sqlite3_column_text(statement, 1);
75 char *image = (char *)sqlite3_column_text(statement, 2);
76
77 NSString *readTitle = [[NSString alloc] initWithUTF8String: title];
78 NSString *readContext = [[NSString alloc] initWithUTF8String: context];
79 NSString *readImage = [[NSString alloc] initWithUTF8String: image];
80
81 returnedValues = [[NSArray alloc] initWithObjects: readTitle, readContext, readImage, nil];
82
83 [readTitle release];
84 [readContext release];
85 [readImage release];
86 }
87 }
88
89 return returnedValues;
90
91 if(statement) {
92 sqlite3_finalize(statement);
93 }
94 sqlite3_close(database);
95
96}
97
98- (void)dealloc {
99 [returnedValues release];
100 [super dealloc];
101}
102
103
104@end