成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使iPhone開發數據持久化

移動開發 iOS
在iPhone上面,我們可以使用SQLite進行數據的持久化。另外值得一提的是 Firefox是使用數據庫的方式保存的,同樣也是SQLite。

如何使iPhone開發數據持久化是本文要介紹的內容。在開發應用程序的時候,當然需要經常的實用數據庫進行數據的保存了,在移動設備上,我們可以使用文件,數據庫等方式去保存,為了能夠讓用戶無法使用其他的程序去修改,我這里認為使用數據庫的方式是一個很好的方式。在iPhone上面,我們可以使用SQLite進行數據的持久化。另外值得一提的是 Firefox是使用數據庫的方式保存的,同樣也是SQLite

iPhone開發重,我們需要首先添加一個SQLite的庫,XCode本身就支持的,我們在左邊的Frameworks里面選擇Add,然后選擇Existing Frameworks,在彈出窗口中選擇SQLite的庫libsqlite3.0.dylib。

iPhone開發之數據持久化

添加之后,我們就可以使用SQLite在iPhone中進行數據的保存,查詢,刪除等操作了。

現在我們可以寫一個SQLite的Helper文件,方便我們在其他的代碼中使用,頭文件(SqliteHelper.h)如下。

  1.   #import   
  2.   #import “sqlite3.h“  
  3.   #define kFileName @”mydatabase.sql”  
  4.   @interface SqliteHelper : NSObject {  
  5.   sqlite3 *database;  
  6.   }  
  7.   //創建表  
  8.   - (BOOL)createTable;  
  9.   //插入數據  
  10.   - (BOOL)insertMainTable:(NSString*) username insertPassword:(NSString*) password;  
  11.   //查詢表  
  12.   - (BOOL)checkIfHasUser;  
  13.   @end  
  14.   我們的代碼文件如下。  
  15.   #import “SqliteHelper.h“  
  16.   @implementation SqliteHelper  
  17.   - (BOOL)createTable  
  18.   {  
  19.   NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
  20.   NSString *paths = [[path objectAtIndex:0] stringByAppendingPathComponent:kFileName];  
  21.   NSFileManager *fileManager = [NSFileManager defaultManager];  
  22.   BOOL fileFinded = [fileManager fileExistsAtPath:paths];  
  23.   NSLog(@”Database file path is %@“,paths);  
  24.   if(fileFinded)  
  25.   {  
  26.   NSLog(@”Database file existed“);  
  27.   if(sqlite3_open([paths UTF8String],&database)!=SQLITE_OK)  
  28.  
  29.  
  30.   {  
  31.   sqlite3_close(database);  
  32.   NSLog(@”Open Failed“);  
  33.   return NO;  
  34.   }  
  35.   }  
  36.   else  
  37.   {  
  38.   NSLog(@”Database file is not existed“);  
  39.   if(sqlite3_open([paths UTF8String],&database)!=SQLITE_OK)  
  40.   {  
  41.   sqlite3_close(database);  
  42.   NSLog(@”Open Failed“);  
  43.   return NO;  
  44.   }  
  45.   }  
  46.   char *errorMsg;  
  47.   NSString *createSQL = @”create table if not exists fields (userid integer primary key,username text,password text)“;  
  48.   if(sqlite3_exec(database,[createSQL UTF8String],NULL,NULL,&errorMsg)!=SQLITE_OK)  
  49.   {  
  50.   sqlite3_close(database);  
  51.   NSLog(@”Open failed or init filed“);  
  52.   return NO;  
  53.   }  
  54.   return YES;  
  55.   }  
  56.   - (BOOL)insertMainTable:(NSString*) username insertPassword:(NSString*) password  
  57.   {  
  58.   char *errorMsg;  
  59.   NSString *createSQL = @”create table if not exists fields (userid integer primary key,username text,password text)“;  
  60.   if(sqlite3_exec(database,[createSQL UTF8String],NULL,NULL,&errorMsg)!=SQLITE_OK)  
  61.   {  
  62.   sqlite3_close(database);  
  63.   NSLog(@”Open failed or init filed“);  
  64.   return NO;  
  65.   }  
  66.   NSString *insertData = [[NSString alloc] initWithFormat:@”insert or replace into 
  67. fields (userid,username,password) values (%d,’%@’,'%@’)“,0,username,password];  
  68.   if(sqlite3_exec(database,[insertData UTF8String],NULL,NULL,&errorMsg)!=SQLITE_OK)  
  69.   {  
  70.   sqlite3_close(database);  
  71.   NSLog(@”Open failed or failed to insert“);  
  72.   return NO;  
  73.   }  
  74.   return YES;  
  75.   }  
  76.   - (BOOL)checkIfHasUser  
  77.   {  
  78.   NSString *getUserCountSQL = @”select * from fields“;  
  79.   sqlite3_stmt *statement;  
  80.   NSLog(@”checkIfHasUser“);  
  81.  
  82.  
  83.   if(sqlite3_prepare_v2(database,[getUserCountSQL UTF8String],-1,&statement,nil)==SQLITE_OK)  
  84.   {  
  85.   //while(sqlite3_step(statement) == SQLITE_ROW)  
  86.   //{  
  87.   // int row = sqlite3_column_int(statement,0);  
  88.   // char* rowData = (char*)sqlite3_column_text(statement,2);  
  89.   // NSString *fieldName = [[NSString alloc] initWithFormat:@”show%d”,row];  
  90.   // NSString *fieldValue = [[NSString alloc] initWithUTF8String:rowData];  
  91.   //  
  92.   // NSLog(@”fieldName is :%@,fieldValue is :%@”,fieldName,fieldValue);  
  93.   // return [[NSString alloc] initWithFormat:@”fieldName is :%@,fieldValue is :%@”,fieldName,fieldValue];  
  94.   //  
  95.   // [fieldName release];  
  96.   // [fieldValue release];  
  97.   //}  
  98.   //sqlite3_finalize(statement);  
  99.   if(sqlite3_step(statement) == SQLITE_ROW)  
  100.   {  
  101.   NSLog(@”Have user“);  
  102.   return YES;  
  103.   }  
  104.   }  
  105.   NSLog(@”No user“);  
  106.   return NO;  
  107.   }  
  108.   @end 

其中checkIfHasUser是檢查數據,這個方法中我注釋的是得到數據,因為我們這里只是check,所以不需要得到數據,直接看是否存在數據即可。上面的代碼雖然沒有過多的注釋,但是代碼本身已經很簡單了,上下文也非常清楚,所以我就不寫過多的注釋了。

小結:關于如何使iPhone開發數據持久化的內容介紹完了,希望本文對你有所幫助!

責任編輯:zhaolei 來源: 黑軟基地
相關推薦

2011-08-17 15:19:38

iPhone應用數據

2011-06-07 17:16:47

iPhone 數據

2011-08-18 15:56:08

iPhone開發內存

2011-08-17 10:09:25

iPhone開發UIWebViewTouch事件

2024-04-25 16:17:53

SentinelNacos數據源

2011-08-22 11:28:46

iPhone開發BMP

2021-03-18 08:18:15

ZooKeeper數據持久化

2009-08-26 18:05:25

ViewState持久

2021-11-18 13:14:08

DDD聚合代碼

2023-08-17 16:17:00

Docker前端

2024-01-26 10:47:55

2017-01-10 14:24:23

2015-07-20 09:26:09

iOS數據庫存儲

2022-03-02 21:53:57

Spring數據庫持久化Jar包

2013-09-12 14:56:02

iOS持久化

2018-12-14 09:48:23

Redis數據故障

2013-05-27 09:59:55

2017-11-14 08:27:32

云中數據存儲

2011-08-16 18:42:42

iPhone開發Release

2020-03-11 09:54:04

技術IT架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品久久久久久久久久 | 欧美精品在线播放 | 毛片视频免费观看 | 国产欧美日韩一区二区三区在线 | 欧美三级不卡 | 人人九九 | www国产亚洲精品 | 成人一区二区三区在线观看 | 久久丝袜视频 | 在线 丝袜 欧美 日韩 制服 | 欧美日韩亚洲一区 | 国产福利观看 | 成在线人视频免费视频 | av中文字幕在线播放 | 草草草久久久 | 日韩精品在线看 | 欧美成人免费在线 | 91在线观看 | 亚洲成人av一区二区 | 欧美男人天堂 | 99久久婷婷| 亚洲第一福利视频 | 欧美在线a | 久久久国产一区二区 | 青青操91| 精品久久亚洲 | 夜夜爽99久久国产综合精品女不卡 | 久久91av| 亚洲精品一区二区网址 | 亚洲精品久久久久中文字幕二区 | 亚洲激情在线 | 干狠狠| 热久久免费视频 | 成人国产在线视频 | 热99在线| 亚洲精品乱码 | chinese中国真实乱对白 | 蜜臀av日日欢夜夜爽一区 | 96久久久久久 | 亚洲视频免费在线观看 | 国产精品视频 |