iOS培训之数据保持(三)

作者:达内 更新时间:2013-12-30 11:44 来源:未知 点击:
嵌入式SQLite3 需要先导入sqlite3 的 api 或 framework。 1 #define kFilename @data.sqlite3 2 3 - (void)viewDidLoad 4 { 5 [super viewDidLoad]; 6 sqlite3 *database; 7 if(sqlite3_open([[self dataFilePath] UTF8String]。
嵌入式SQLite3
需要先导入sqlite3 的 api 或 framework。
 1 #define kFilename @"data.sqlite3"
 2  
 3 - (void)viewDidLoad
 4 {
 5     [super viewDidLoad];
 6 sqlite3 *database;
 7     if(sqlite3_open([[self dataFilePath] UTF8String], &database)!=SQLITE_OK)
 8      {
 9          sqlite3_close(database);
10          NSAssert(0, @"Failed to open database");
11      }
12     
13     NSString *createSQL=@"CREATE TABLE IF NOT EXISTS FIELDS"
14                             "(ROW INTEGER PRIMARY KEY , FIELD_DATA TEXT);";
15     char *errorMsg;
16     if(sqlite3_exec(database, [createSQL UTF8String], NULL, NULL, &errorMsg)!=SQLITE_OK)
17        {
18            sqlite3_close(database);
19            NSAssert(0, @"Error creating table: %s",errorMsg);
20        }
21     NSString *query=@"SELECT ROW, FIELD_DATA FROM FIELDS ORDER BY ROW";
22     sqlite3_stmt *statement;
23     if(sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil)==SQLITE_OK)
24     {
25         while (sqlite3_step(statement)==SQLITE_ROW)  //移动位置指针
26        {
27             int row=sqlite3_column_int(statement,0);
28             char *rowData=(char *)sqlite3_column_text(statement, 1);
29             
30             NSString *fieldName=[[NSString alloc] initWithFormat:@"field%d",row];
31             NSString *fieldValue=[[NSString alloc] initWithUTF8String:rowData];
32             UITextField *field=[self valueForKey:fieldName];
33             field.text=fieldValue;
34         }
35         sqlite3_finalize(statement);
36     }
37     sqlite3_close(database);
38                         
39     
40     UIApplication *app =[UIApplication sharedApplication];
41     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive:) name:UIApplicationWillResignActiveNotification object:app];
42 }
43  
44 -(void)applicationWillResignActive:(NSNotification *)notification;
45 {
46     sqlite3 *database;
47     if(sqlite3_open([[self dataFilePath] UTF8String], &database)!=SQLITE_OK)
48     {
49         sqlite3_close(database);
50         NSAssert(0, @"Failed to open database");
51     }
52     
53     for (int i=1; i<=4; i++) {
54         NSString *fieldName=[[NSString alloc] initWithFormat:@"field%d",i];
55         UITextField *field=[self valueForKey:fieldName];
56         
57         char *updata="INSERT OR REPLACE INTO FIELDS (ROW, FIELD_DATA) VALUES(? , ?);";
58         sqlite3_stmt *stmt;
59         if (sqlite3_prepare_v2(database, updata, -1, &stmt, nil)==SQLITE_OK) {
60             sqlite3_bind_int(stmt, 1, i);
61             sqlite3_bind_text(stmt, 2, [field.text UTF8String],-1,NULL);
62         }
63         if(sqlite3_step(stmt)!=SQLITE_DONE)
64         {
65             NSAssert(0,@"Error updating table.");
66         }
67         sqlite3_finalize(stmt);
68     }
69     sqlite3_close(database);
70 } 
沙盒中的Documents文件夹生成data.sqlite3文件(未知直读方法)。 
学习有时就像刚才讲述的知识一样, 从开头到最后都需要一个详细的规划过程,达内老师会为大家提供最优良的学习方法,为大家带来不一样的学习天地。 
标签:

相关阅读

最新开班信息

3G-IOS软件工程师就业班
北京潘家园中心 开课日期:9月29日
3G-IOS软件工程师就业班
北京潘家园中心 开课日期:9月29日
3G-IOS软件工程师周末班
北京潘家园中心 开课日期:9月29日
3G-IOS软件工程师周末班
北京潘家园中心 开课日期:9月29日