码迷,mamicode.com
首页 > 数据库 > 详细

sqlite的增删改查

时间:2017-05-24 14:40:10      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:pat   close   not   sse   下载地址   更新   执行   com   ext   

SQLite是使用C语言写的开源库,实现了一个自包含的SQL关系型数据库引擎,可以使用SQLite存储操作大量的数据,作为关系型数据库我们可以在一个数据库中建立多张相关联的表来解决大量数据重复的问题。而且SQLite库也针对移动设备上的使用进行了优化。 


因为SQLite的接口使用C写的,而且Objective-CC的超集所以可以直接在项目中使用SQLite
写了一个小demo,git下载地址:https://github.com/yangchengzh/PachagingSqlite
下面是关键的部分代码
 
static sqlite3 *db;
- (sqlite3 *)openDB
{
 
   //  说明已经打开数据库
    if (db != nil) {
        return db;
    }
    NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString *fileName = [doc stringByAppendingPathComponent:@"perple.sqlite"];
   
    //将OC字符串转换为c语言的字符串
    const char *cfileName = fileName.UTF8String;
    //打开数据库文件(如果数据库文件不存在,该函数就会自动创建数据库文件)
    int result = sqlite3_open(cfileName, &db);
    if (result == SQLITE_OK) {
        NSLog(@"数据库已打开");
    } else {
        NSLog(@"数据库打开失败");
    }
    return db;
}

- (void)closeDB
{
    int result = sqlite3_close(db);
    if (result == SQLITE_OK) {
        NSLog(@"数据库已关闭");
        db = nil;
    } else {
        NSLog(@"数据库关闭失败");
    }
}

- (void)creatTable
{
    db = [self openDB];
    NSString *sql = @"create table IF NOT EXISTS perpleTable(number integer primary key not NULL, name text not NULL, gender text not NULL, age integer not NULL)";
   
    int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
    if (result == SQLITE_OK) {
        NSLog(@"创建表成功");
    } else {
        NSLog(@"创建表失败");
    }
    [self closeDB];
}

- (void)insertWithModel:(PersonModel *)model
{
    db = [self openDB];
    NSString *sql = [NSString stringWithFormat:@"insert into perpleTable(number, name, gender, age) values(‘%ld‘, ‘%@‘, ‘%@‘, ‘%ld‘)", model.number, model.name, model.gender, model.age];
    int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
    if (result == SQLITE_OK) {
        NSLog(@"添加成功");
    } else {
        NSLog(@"添加失败");
    }
    [self closeDB];
}

- (void)delateWithAge:(NSInteger)age
{
    db = [self openDB];
    NSString *sql = [NSString stringWithFormat:@"delete from perpleTable where age = ‘%ld‘", age];
    int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
    if (result == SQLITE_OK) {
        NSLog(@"删除成功");
    } else {
        NSLog(@"删除表失败");
    }
    [self closeDB];
}

- (void)delateWithName:(NSString *)name
{
    db = [self openDB];
    NSString *sql = [NSString stringWithFormat:@"delete from perpleTable where name = ‘%@‘", name];
    int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
    if (result == SQLITE_OK) {
        NSLog(@"删除成功");
    } else {
        NSLog(@"删除表失败");
    }
    [self closeDB];
}

- (void)updateWithName:(NSString *)name byAge:(NSInteger)age
{
    db = [self openDB];
    NSString *sql = [NSString stringWithFormat:@"update perpleTable set name = ‘%@‘ where age = ‘%ld‘", name, age];
    int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
    if (result == SQLITE_OK) {
        NSLog(@"更新数据成功");
    } else {
        NSLog(@"更新数据失败");
    }
    [self closeDB];
}

- (void)selertAll
{
    //1.打开数据库
    db = [self openDB];
    //2.写sql语句
    NSString *sql = @"select * from perpleTable";
    //3.创建跟随指针
    sqlite3_stmt *stmt = nil;
    //4.执行语句
    int result = sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt, NULL);
    //5.判断语句是否正确
    if (result == SQLITE_OK) {
        NSLog(@"查询成功");
        //6.执行查询
        while (sqlite3_step(stmt) == SQLITE_ROW) {
            //7.满足条件 读取数据
            int number = sqlite3_column_int(stmt, 0);
            const unsigned char *name = sqlite3_column_text(stmt, 1);
            const unsigned char *gender = sqlite3_column_text(stmt, 2);
            int age = sqlite3_column_int(stmt, 3);
            NSLog(@"name = %s, number = %d, gender = %s, age = %d", name, number, gender, age);
        }
       
    } else {
        NSLog(@"查询失败");
    }
    //8.释放指针
    sqlite3_finalize(stmt);
    //9.关闭数据库
    [self closeDB];
}

- (void)selertWithAge:(NSInteger)age
{
    db = [self openDB];
    NSString *sql = [NSString stringWithFormat:@"select * from perpleTable where age = %ld", age];
    sqlite3_stmt *stmt = nil;
    int result = sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt, NULL);
    if (result == SQLITE_OK) {
        NSLog(@"查询成功");
        while (sqlite3_step(stmt) == SQLITE_ROW) {
            const unsigned char *name = sqlite3_column_text(stmt, 1);
            const unsigned char *gender = sqlite3_column_text(stmt, 2);
            int number = sqlite3_column_int(stmt, 0);
            int age = sqlite3_column_int(stmt, 3);
            NSLog(@"name = %s, number = %d, gender = %s, age = %d", name, number, gender, age);
        }
       
    } else {
        NSLog(@"查询失败");
    }
    sqlite3_finalize(stmt);
    [self closeDB];
}

sqlite的增删改查

标签:pat   close   not   sse   下载地址   更新   执行   com   ext   

原文地址:http://www.cnblogs.com/bulingxiang/p/6898505.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!