sqlite3数据库操作

在iOS中使用SQLite3首先要添加库文件libsqlite3.dylib并引入头文件
1、打开数据库sqlite3_open(<#const char *filename#>, <#sqlite3 **ppDb#>)
(1)作用:把一个文件名称传递给他,它会自动检测这个文件是否存在,如果不存在的话,会自动创建相应的文件(这里为数据库文件,刚创建为空)。
(2)参数:它的第一个参数为文件的名称(需转换为C语言的),第二个参数是数据库的实例,sqlite3 *db;
说明:sqlite3是一种类型,db是数据库的句柄,就是数据库的象征,如果要进行增删改查,就得操作db这个实例。
(3)返回值:它的返回值为int型的,根据函数的返回值可以知道,打开数据库文件是成功还是失败,如果返回值是SQLITE_OK则说明成功,否则为失败。

//设置数据库路径

NSString *dbPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingString:@"/text.sqlite"];
if (sqlite3_open(dbPath.UTF8String, &_db) == SQLITE_OK) {
    NSLog(@"打开数据库成功");
    //打开数据库成功后创建一个表
    //操作命令的字符串
    //注意字符串的结束处有 ; 号
    NSString *newListSQL = @"create table if not exists t_text(id integer primary key autoincrement,name text);";
    char *errMsg;
    sqlite3_exec(_db, newListSQL.UTF8String, NULL, NULL, &errMsg);
    if (errMsg) {
        NSLog(@"建表失败 -- %s",errMsg);
    }else{
        NSLog(@"建表成功");
    }
}else{
    NSLog(@"打开数据库失败");
}
//2、增
NSString *addQSL = [NSString stringWithFormat:@"insert into t_text('%@') values('%@');",@"name",@"33"];
char *errMsg;
sqlite3_exec(_db, addQSL.UTF8String, NULL, NULL, &errMsg);
if (errMsg == SQLITE_OK) {
    NSLog(@"添加成功!");
}else{
    NSLog(@"添加失败!%s",errMsg);
}
//3、删
NSString *deleteSQL = [NSString stringWithFormat:@"delete from t_text where id == 2"];
sqlite3_exec(_db, deleteSQL.UTF8String, NULL, NULL, &errMsg);
if (errMsg == SQLITE_OK) {
    NSLog(@"删除成功!");
}else{
    NSLog(@"删除失败!%s",errMsg);
}
//4、改
NSString * updateSQL = @"update t_text set name = 'hello-world' where id = 1;";
sqlite3_exec(_db, updateSQL.UTF8String, NULL, NULL, &errMsg);
if (errMsg) {
    NSLog(@"修改失败--%s",errMsg);
}else{
    NSLog(@"修改成功");
}
//5、查
NSString * searchSQL = @"select * from t_text;";
//查询的句柄,游标
sqlite3_stmt * stmt;
if (sqlite3_prepare(_db, searchSQL.UTF8String, -1, &stmt, NULL) == SQLITE_OK) {
    //查询数据
    while (sqlite3_step(stmt) == SQLITE_ROW) {
        //获取表数据的内容
        //sqlite3_column_text('句柄',字段索引值)
        NSString * name = [NSString stringWithCString:(const char *)sqlite3_column_text(stmt, 1) encoding:NSUTF8StringEncoding];
        NSLog(@"name = %@",name);
    }
    
}

你可能感兴趣的:(sqlite3数据库操作)