安全黑客
当前位置:安全黑客文章资讯手机安全Iphone安全
日期:2011-06-19 21:20:00  来源:本站整理

iPhone开辟之数据长期化[Iphone安全]

赞助商链接



  本文“iPhone开辟之数据长期化[Iphone安全]”是由安全黑客为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  在开辟利用程序的时刻,当然需求常常的实用数据库举行数据的保存了,在移动设备上,我们可以利用文件,数据库等方法去保存,为了可以让用户无法利用其他的程序去改正,我这里认为利用数据库的方法是一个很好的方法.在iPhone上面,我们可以利用SQLite举行数据的长期化.别的值得一提的是 Firefox是利用数据库的方法保存的,一样也是SQLite.

  在iPhone开辟重,我们需求首先增添一个SQLite的库,XCode本身就支持的,我们在左边的Frameworks里面挑选Add,然后挑选Existing Frameworks,在弹出窗口中挑选SQLite的库libsqlite3.0.dylib.

  增添上后,我们便可以利用SQLite在iPhone中举行数据的保存,查询,删除等操作了.

  目前我们可以写一个SQLite的Helper文件,便利我们在其他的代码中利用,头文件(SqliteHelper.h)以下.

  #import

  #import "sqlite3.h"

  #define kFileName @"mydatabase.sql"

  @interface SqliteHelper : NSObject {

  sqlite3 *database;

  }

  //成立表

  - (BOOL)createTable;

  //插入数据

  - (BOOL)insertMainTable:(NSString*) username insertPassword:(NSString*) password;

  //查询表

  - (BOOL)checkIfHasUser;

  @end

  我们的代码文件以下.

  #import "SqliteHelper.h"

  @implementation SqliteHelper

  - (BOOL)createTable

  {

  NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

  NSString *paths = [[path objectAtIndex:0] stringByAppendingPathComponent:kFileName];

  NSFileManager *fileManager = [NSFileManager defaultManager];

  BOOL fileFinded = [fileManager fileExistsAtPath:paths];

  NSLog(@"Database file path is %@",paths);

  if(fileFinded)

  {

  NSLog(@"Database file existed");

  if(sqlite3_open([paths UTF8String],&database)!=SQLITE_OK)

  接上页

  {

  sqlite3_close(database);

  NSLog(@"Open Failed");

  return NO;

  }

  }

  else

  {

  NSLog(@"Database file is not existed");

  if(sqlite3_open([paths UTF8String],&database)!=SQLITE_OK)

  {

  sqlite3_close(database);

  NSLog(@"Open Failed");

  return NO;

  }

  }

  char *errorMsg;

  NSString *createSQL = @"create table if not exists fields (userid integer primary key,username text,password text)";

  if(sqlite3_exec(database,[createSQL UTF8String],NULL,NULL,&errorMsg)!=SQLITE_OK)

  {

  sqlite3_close(database);

  NSLog(@"Open failed or init filed");

  return NO;

  }

  return YES;

  }

  - (BOOL)insertMainTable:(NSString*) username insertPassword:(NSString*) password

  {

  char *errorMsg;

  NSString *createSQL = @"create table if not exists fields (userid integer primary key,username text,password text)";

  if(sqlite3_exec(database,[createSQL UTF8String],NULL,NULL,&errorMsg)!=SQLITE_OK)

  {

  sqlite3_close(database);

  NSLog(@"Open failed or init filed");

  return NO;

  }

  NSString *insertData = [[NSString alloc] initWithFormat:@"insert or replace into fields (userid,username,password) values (%d,’%@’,'%@’)",0,username,password];

  if(sqlite3_exec(database,[insertData UTF8String],NULL,NULL,&errorMsg)!=SQLITE_OK)

  {

  sqlite3_close(database);

  NSLog(@"Open failed or failed to insert");

  return NO;

  }

  return YES;

  }

  - (BOOL)checkIfHasUser

  {

  NSString *getUserCountSQL = @"select * from fields";

  sqlite3_stmt *statement;

  NSLog(@"checkIfHasUser");

  接上页

  if(sqlite3_prepare_v2(database,[getUserCountSQL UTF8String],-1,&statement,nil)==SQLITE_OK)

  {

  //while(sqlite3_step(statement) == SQLITE_ROW)

  //{

  // int row = sqlite3_column_int(statement,0);

  // char* rowData = (char*)sqlite3_column_text(statement,2);

  // NSString *fieldName = [[NSString alloc] initWithFormat:@"show%d",row];

  // NSString *fieldValue = [[NSString alloc] initWithUTF8String:rowData];

  //

  // NSLog(@"fieldName is :%@,fieldValue is :%@",fieldName,fieldValue);

  // return [[NSString alloc] initWithFormat:@"fieldName is :%@,fieldValue is :%@",fieldName,fieldValue];

  //

  // [fieldName release];

  // [fieldValue release];

  //}

  //sqlite3_finalize(statement);

  if(sqlite3_step(statement) == SQLITE_ROW)

  {

  NSLog(@"Have user");

  return YES;

  }

  }

  NSLog(@"No user");

  return NO;

  }

  @end

  此中checkIfHasUser是查抄数据,这个办法中我注释的是得到数据,因为我们这里只是check,所以不需求得到数据,直接看能否存在数据便可.上面的代码固然没有过量的注释,但是代码本身已经很简单了,上下文也非常清楚,所以我就不写过量的注释了.


  以上是“iPhone开辟之数据长期化[Iphone安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看安全黑客为您推荐以下文章:
  • 汇丰银行可能会抛弃黑莓手机20万部iPhone
  • iPhone黑客警惕v.2.0.1更新
  • iPhone黑客走的太远,关闭苹果
  • iPhone2.0.1固件的iPhone和iPod touch
  • App Store上iPhone3G/EDGE共享应用程序就会被杀死
  • iPhone的3G业主报告的细小裂纹,在自己的手机外壳
  • iPhone3G:'必须有'到'之后可能会“
  • iPhone的应用程序已经破解?
  • iPhone的3G基带被砍死
  • iPhone的安全漏洞发现
  • iPhone OS 2.1包含复制和粘贴?
  • 卖你的iPhone1.0,而你还可以
  • 本文地址: 与您的QQ/BBS好友分享!

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    免责条款 - 广告合作 - 下载声明 - 欢迎投稿 - 友情连接 - 网站地图 -
    Copyright © 2012-2013 www.110hack.com. All Rights Reserved .