IOS学的容易----单例类对数据库的具体的操作的⽅法进⾏封装(二)

来源:互联网 发布:javascript是什么知乎 编辑:程序博客网 时间:2024/06/02 00:28

//删除数据
- (void)deleteT:(LANOUStudent *)model{

    db = [self openDB];
    NSString *sql = [NSString stringWithFormat:@"delete from lanouStudent          where age = '25'"];
    char *error = nil;    int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, &error);    if (result == SQLITE_OK) {

NSLog(@"成功");}else{

NSLog(@"失败");}

    [self closeDB];}

//更新(修改数据)
- (void)upDateT:(LANOUStudent *)model{

    [self openDB];    NSString *sql = [NSString stringWithFormat:@"update lanouStudent set age =
          '%d' where name = '%@'", 45, model.name];
    char *error = nil;    int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, &error);    if (result == SQLITE_OK) {

NSLog(@"成功");}else{

NSLog(@"失败");}

Page 3 of 6

SQLManager.m

15/9/16 下午5:18

    [self closeDB];

}

//查询单个数据
- (LANOUStudent *)selectT:(NSString *)name andAge:(NSString *)age{

// 1.开启数据库
db = [selfopenDB];

// 2.SQL语句的书写
NSString *sql = [NSString stringWithFormat:@"select * from lanouStudent

where age = '%@' and name = '%@'", age, name];// 3.设置静态指针

//⽅方法的参数分析
// int nByte数值为"- 1",就表⽰示⽆无限⻓长
//第四个参数是表⽰示 截取不执⾏行的语句
sqlite3_stmt *stmt =nil;
intresult = sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt,NULL);if(result == SQLITE_OK) {

NSLog(@"成功");// 4.绑定查询的条件

//⽅方法的参数分析/**

         *  Description         *         *  @param sqlite3_stmt sqlite3_stmt description
  • *  @paramint

  • *  @paramchar

  • *  @paramn*

  • *  @returnreturn value description绑定后执⾏行的参数(⼀一般就将数值 填写

int description查询条件的顺序 从1开始char description 写查询条件的字段名
n description字符串的⻓长度

NULL)*/

  sqlite3_bind_text(stmt, 2, name.UTF8String, - 1, NULL);

sqlite3_bind_text(stmt,1, age.UTF8String, -1,NULL);// 5.开始查询

//⽅方法的参数分析
// sqlite3_step(stmt) == SQLITE_ROW

//如果 上⾯面这条语句 可以被找到 就返回SQLITE_ROWwhile(sqlite3_step(stmt) == SQLITE_ROW) {

// 6.获取数据
//⽅方法的参数分析/**

* Description
*
*
@paramstmt
*
@paramiCol#> iCol description#>在数据库表中的 列数从零开始 那

         么就需要我们打开数据库确定我们具体的参数在第⼏几⾏行
      *      *  @return return value description      */

//获取数据
char*name = (char*)sqlite3_column_text(stmt,1);char*gender = (char*)sqlite3_column_text(stmt,2);char*age = (char*)sqlite3_column_text(stmt,3);char*number = (char*)sqlite3_column_text(stmt,0);

// 7.给数据对象进⾏行赋值

stmt description

Page 4 of 6

SQLManager.m

15/9/16 下午5:18

            LANOUStudent *student = [[LANOUStudent alloc] init];            student.name = [NSString stringWithUTF8String:name];            student.number = [NSString stringWithUTF8String:number];            student.gender = [NSString stringWithUTF8String:gender];            student.age = [NSString stringWithUTF8String:age];

// 8.释放指针sqlite3_finalize(stmt);// 9.关闭数据库
[selfcloseDB];
// 10.返回对象

           return [student autorelease];        }

} else{NSLog(@"失败");

}

// 11.关闭数据库[selfcloseDB];//返回空
return nil;

}

//查询所有的数据
- (NSArray *)selectAllT{

// 1.开启数据库
db = [selfopenDB];
// 2.SQL语句
NSString *sql = [NSString stringWithFormat:@"select *from lanouStudent"];// 3.静态指针
sqlite3_stmt *stmt =nil;
// 4.执⾏行
intresult = sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt,NULL);

// 5.判断
if(result == SQLITE_OK) {

NSLog(@"成功");
// 6.查询
NSMutableArray *array = [NSMutableArray array];while(sqlite3_step(stmt) == SQLITE_OK) {

// 7.读取数据
char*name = (char*)sqlite3_column_text(stmt,1);char*gender = (char*)sqlite3_column_text(stmt,2);char*age = (char*)sqlite3_column_text(stmt,3);char*number = (char*)sqlite3_column_text(stmt,0);

// 8.给数据对象赋值
LANOUStudent *student = [[LANOUStudent alloc] init];student.name = [NSString stringWithUTF8String:name];student.gender = [NSString stringWithUTF8String:gender];student.age = [NSString stringWithUTF8String:age];student.number = [NSString stringWithUTF8String:number];// 9.添加数组
[array addObject:student];
// 10.释放对象

Page 5 of 6

SQLManager.m

15/9/16 下午5:18

            [student release];        }

//释放指针sqlite3_finalize(stmt);//关闭数据库

[selfcloseDB];//返回对象

        return array;

} else{NSLog(@"失败");

}

//关闭数据库[selfcloseDB];//返回值
return nil;

}

0 0