详解IOS四种保存数据的方式


当前第2页 返回上一页

第二步:生成在该路径下的文件:

NSString *FileName=[documentDirectory stringByAppendingPathComponent:fileName];//fileName就是保存文件的文件名

第三步:往文件中写入数据:

[data writeToFile:FileName atomically:YES];//将NSData类型对象data写入文件,文件名为FileName

最后:从文件中读出数据:

NSData data=[NSData dataWithContentsOfFile:FileName options:0 error:NULL];//从FileName中读取出数据

4. SQLite:采用SQLite数据库来存储数据。SQLite作为一中小型数据库,应用ios中,跟前三种保存方式相比,相对比较复杂一些。还是一步步来吧!

第一步:需要添加SQLite相关的库以及头文件:在项目文件的Build Phases下,找到Link Binary Library(ies),添加libsqlite3.0.dylib(libsqlite3.dylib与前者的区别暂时不知,两者应该差不多);在项目文件中头文件或者源文件中添加头文件#import "/usr/include/sqlite3.h"

第二步:开始使用SQLite:

NSArray *documentsPaths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask , YES);
 NSString *databaseFilePath=[[documentsPaths objectAtIndex:0] stringByAppendingPathComponent:@"mydb"];
 //上面两句已经比较熟悉了吧! 
//打开数据库
if (sqlite3_open([databaseFilePath UTF8String], &database)==SQLITE_OK) { 
     NSLog(@"sqlite dadabase is opened."); 
 }
 else{ return;}//打开不成功就返回

在打开了数据库的前提下,如果数据库没有表,那就开始建表了哦!

char *error; 
 const char *createSql="create table(id integer primary key autoincrement, name text)";
 if (sqlite3_exec(database, createSql, NULL, NULL, &error)==SQLITE_OK) { 
     NSLog(@"create table is ok."); 
 }
 else
 {
    NSLog(@"error: %s",error);
    sqlite3_free(error);//每次使用完毕清空error字符串,提供给下一次使用
} 

建表完成之后,就开始插入记录:

const char *insertSql="insert into a person (name) values(‘gg')"; 
if (sqlite3_exec(database, insertSql, NULL, NULL, &error)==SQLITE_OK) { 
     NSLog(@"insert operation is ok."); 
 }

 else
 {
    NSLog(@"error: %s",error);
    sqlite3_free(error);//每次使用完毕清空error字符串,提供给下一次使用
} 

下一步,查询记录:

const char *selectSql="select id,name from a person"; 
 sqlite3_stmt *statement; 
 if (sqlite3_prepare_v2(database,selectSql, -1, &statement, nil)==SQLITE_OK) { 
     NSLog(@"select operation is ok."); 
 }
 else
 {
    NSLog(@"error: %s",error);
    sqlite3_free(error);
 } 
 while(sqlite3_step(statement)==SQLITE_ROW) { 
 int _id=sqlite3_column_int(statement, 0); 
 NSString *name=(char*)sqlite3_column_text(statement, 1); 
 NSLog(@"row>>id %i, name %s",_id,name); 
 }
 sqlite3_finalize(statement);

最后,关闭数据库:

sqlite3_close(database); 

注意:写入数据库,字符串可以采用char方式,而从数据库中取出char类型,当char类型有表示中文字符时,会出现乱码。这是因为数据库默认使用ascII编码方式。所以要想正确从数据库中取出中文,需要用NSString来接收从数据库取出的字符串。


标签:SQLite

返回前面的内容

相关阅读 >>

Sqlite时间戳转时间语句(时间转时间戳)

Sqlite3 api 编程手册

django 将自带的数据库Sqlite3改成mysql实例

django 2.0版本的新特性抢先看!

基于java实现一个简单的单词本android app的实践

python pyqt5实战项目之查询器的实现流程详解

c#操作Sqlite数据库之读写数据库的方法

android 中自定义contentprovider与contentobserver的使用简单实例

Sqlite 入门教程四  增删改查 有讲究

将 ghost 从 Sqlite3 数据库迁移到 mysql 数据库

更多相关阅读请进入《Sqlite》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...