sqlite3 基本使用,创建数据库,创建表,添加查询数据

network | | 访问(61)

1、添加引用

#import <sqlite3.h>

2、添加sqlite3.0库

3、执行SQL语句

/** 数据库对象实例 */
@property (nonatomic, assign) sqlite3 *db;

/**
 初始化数据库,创建数据库
 */
- (void)createDatabase
{
    // 打开数据库(连接数据库)
    NSString *filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"mydb.sqlite"];
    // 如果数据库文件不存在, 系统会自动创建文件自动初始化数据库
    int status = sqlite3_open(filename.UTF8String, &_db);
    if (status == SQLITE_OK) { // 打开成功
        NSLog(@"打开数据库成功");
        
        // 创表
        const char *sql = "CREATE TABLE IF NOT EXISTS t_shop (id integer PRIMARY KEY, name text NOT NULL, price real);";
        char *errmsg = NULL;
        sqlite3_exec(self.db, sql, NULL, NULL, &errmsg);
        if (errmsg) {
            NSLog(@"创表失败--%s", errmsg);
        }
    } else { // 打开失败
        NSLog(@"打开数据库失败");
    }
}

// 插入数据
- (void)insertEntity
{
    NSString *sql = [NSString stringWithFormat:@"INSERT INTO t_shop(name, price) VALUES ('%@',%f);",@"AAA",123.00];
    int result = sqlite3_exec(self.db, sql.UTF8String, NULL, NULL, NULL);
    NSLog(@"%d",result);
}

/**
 查询数据
 */
- (void)selectEntity
{
    const char *sql = "SELECT name,price FROM t_shop;";
    // stmt是用来取出查询结果的
    sqlite3_stmt *stmt = NULL;
    // 准备
    int status = sqlite3_prepare_v2(self.db, sql, -1, &stmt, NULL);
    if (status == SQLITE_OK) { // 准备成功 -- SQL语句正确
        while (sqlite3_step(stmt) == SQLITE_ROW) { // 成功取出一条数据
            const char *name = (const char *)sqlite3_column_text(stmt, 0);
            const char *price = (const char *)sqlite3_column_text(stmt, 1);
            NSLog(@"名称:%s,价格:%s",name,price);
        }
    }
}