今天保存數據用到了sqlite,簡單的使用了下
外部接口:public
@interface XBSQLiteTools : NSObject
//保存數據
+ (void)saveDataWithContact:(XBContact *)contact;
//取數據
+ (NSArray *)contactList;
//根據sql取得數據
+ (NSArray *)contactListWithSQL:(NSString *)sql;
//清空表中所有數據
+ (void)clearAllData;
@end
內部接口 : private
static sqlite3 *_db;
//這個方法在生命週期中只調用一次,所以作爲創建數據庫和創建表名最合適
+ (void)initialize
{
NSString *path = [NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filepath = [path stringByAppendingPathComponent:@"contacts.sqlite"];
NSLog(@"%@",filepath);
// 打開數據酷
if(sqlite3_open(filepath.UTF8String, &_db) == SQLITE_OK)
{
NSLog(@"打開成功!");
}
else
{
NSLog(@"打開失敗!");
}
NSString *sql = @"create table if not exists t_contact (id integer primary key autoincrement, name text, tel text);";
char *error = NULL;
sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &error);
if(error)
{
NSLog(@"創建失敗!");
}
else
{
NSLog(@"創建成功!");
}
}
//除了查詢外,其他操作都會調用這個內部藉口
+ (BOOL)execWithSql:(NSString *)sql
{
BOOL flag;
char *error = NULL;
sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &error);
if(error)
{
NSLog(@"%s",error);
flag = NO;
}
else
{
flag = YES;
}
return flag;
}
+ (void)saveDataWithContact:(XBContact *)contact
{
NSString *sql = [NSString stringWithFormat:@"insert into t_contact (name, tel) values ('%@','%@');",contact.name,contact.tel];
//執行插入操作
BOOL flag = [XBSQLiteTools execWithSql:sql];
if(flag == YES)
{
//插入成功
}
else
{
//插入失敗
}
}
+ (NSArray *)contactList
{
return [XBSQLiteTools contactListWithSQL:@"select * from t_contact"];
}
//查詢操作,模糊查詢等操作可通過這個外部接口
+ (NSArray *)contactListWithSQL:(NSString *)sql
{
NSMutableArray *contactArray = [NSMutableArray array];
//做查詢操作
sqlite3_stmt *stmt;
if( sqlite3_prepare_v2(_db, sql.UTF8String, -1, &stmt, NULL) == SQLITE_OK)
{
//遍歷結果集合
while (sqlite3_step(stmt) == SQLITE_ROW) {
//獲取列的內容
NSString *name = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];
NSString *tel = [NSString stringWithUTF8String:(const char*)sqlite3_column_text(stmt, 2)];
XBContact *contact = [XBContact contactWithName:name Tel:tel];
[contactArray addObject:contact];
}
}
return contactArray;
}
//清空表中的內容
+ (void)clearAllData
{
NSString *sql = @"delete from t_contact;";
[CGContactTool execWithSql:sql];
}