sqlite保存數據模型

今天保存數據用到了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];
} 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章