SQLite3 代码库

首先导入SQLite3,而我们访问SQLite3需要通过一个API函数,这个函数在libsqlite3.dylib文件中
 我们需要把这个动态库给加入到项目 

方法是 在Grops&Files窗格中选择Frame这个文件夹,然后从Project菜单中选择Add toproject。。。然后通过路径/Develerper/Platform/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulatorX.Y.Sdk/usr/lib
找到libsqlite3.dylib


在.h文件创建
#definekFilename   @"data.sqlite3"
sqlite3   *database;//创建数据库
- (NSString*)dataFilePath;//找数据库的文件位置
在.m文件中
1.找数据库文件
- (NSString *)dataFilePath{
   NSArray *paths =NSSearchPathForDirectoriesInDomains(
                                                        NSDocumentDirectory, NSUserDomainMask, YES);
   NSString *documentsDirectory = [pathsobjectAtIndex:0];
   return [documentsDirectorystringByAppendingPathComponent:kFilename];
}

2.打开数据库文件,如果还没有那么就创建一个
- (void)viewDidLoad{


   if (sqlite3_open([[self dataFilePath] UTF8String],&database)!= SQLITE_OK)//打开数据库
   {
       sqlite3_close(database);//异常就关闭
       NSAssert(0, @"Failed to open database");//设置一个断言,这样避免程序出错了,程序员还不知道
   }
   
   char *errorMsg;//设置一个错误存储器
       // 创建表格名为 files 第一列为row 类型为intget并且为主键,第二列为file-data,类型为text
   NSString *createSQL = @"CREATE TABLE IF NOT EXISTS FIELDS (ROWINTEGER PRIMARY KEY, FIELD_DATA TEXT);";
                              
                                                   
   //用sqlite3_exec把创建的表传递给数据库(sqlite3_exec用于执行不返回数据的操作,如更新,插入和删除操作
   if (sqlite3_exec (database, [createSQL UTF8String],NULL, NULL, &errorMsg) !=SQLITE_OK)      
   {
       sqlite3_close(database);
       NSAssert1(0, @"Error creating table: %s",errorMsg);
   }
   //查询操作比较复杂,必须先输入命令
   NSString *query = @"SELECT ROW, FIELD_DATA FROM FIELDS ORDER BYROW";//
   
   sqlite3_stmt *statement;
   //sqlite3_prepare_v2 准备并且检查sql语句是否完成,
   if (sqlite3_prepare_v2( database, [query UTF8String],-1,&statement, nil) == SQLITE_OK)
   {
       while (sqlite3_step(statement) == SQLITE_ROW) //执行sql语句
         
      {//单步调试并从数据库中检索到int和nsstring的
           int row = sqlite3_column_int(statement,0);//column是列的意思 
           char *rowData = (char *)sqlite3_column_text(statement,1);
         //这里定义了一个和输出口名字一样的string(本例中的输出口为field1)
         //然后通过控制器调用valueFoeKey这个函数来把输出口的TextField和你创建的绑定到一块
         //这样你就可以直接调用输出口中的内容-----很美妙的设计方式
           
           NSString *fieldName = [[NSString alloc]
                                  initWithFormat:@"field%d", row];
           NSString *fieldValue = [[NSString alloc]
                                   initWithUTF8String:rowData];
           UITextField *field = [self valueForKey:fieldName];
           field.text = fieldValue;
           [fieldName release];
           [fieldValue release];
       }
       sqlite3_finalize(statement);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值