ios sqlite3的简单使用

第一:创建表格

//创建表格
-(void)creatTab{
    NSString*creatSQL=@"CREATE TABLE IF NOT EXISTS PERSIONFO(ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,AGE TEXT, SEX TEXT,WEIGHT INTEGER,ADDRESS TEXT)";
    char *ERROR;
    if (sqlite3_exec(database,[creatSQL UTF8String], NULL, NULL, &ERROR)!=SQLITE_OK) {
        sqlite3_close(database);
        NSAssert(0, @"creat table faild!");
        NSLog(@"创建表格失败");
    }
}

解释:CREATE TABLE IF NOT EXISTS PERSIONFO    如果没有名称为:PERSIONFO的表,建个表PERSIONFO

     ID INTEGER   列名:ID 类型:long int  PRIMARY KEY 名为主键   AUTOINCREMENT 自动加一,并产生sqlite_sequence

  sqlite3_exec(database,[creatSQL UTF8String], NULL, NULL, &ERROR) 参数1.sqlite3类 参数2.sql语句 参数3.回调函数 参数4.回调函数的第一个参数 参数5.错误

数据类型:

  •   NULL - 空值
  •   INTERGER - 有符号整数类型
  •   REAL - 浮点数类型
  •   TEXT - 字符串(其编码取决于DB的编码)
  •     BLOB - 二进制表示

第二:打开数据库

-(void)creatSqlite{
    if(sqlite3_open([[self dataFilePath] UTF8String],&database)!=SQLITE_OK){
        sqlite3_close(database);
        NSAssert(0, @"open database faid");
        NSLog(@"数据库创建失败");
    };
}

解释:sqlite3_open([[self dataFilePath] UTF8String],&database) 打开数据库:参数1.地址 urf8类型   参数2.数据库类的地址

第三:插入数据

-(void)insertData{
    NSString*sql1=[NSString stringWithFormat:@"INSERT INTO '%@' ('%@','%@' ,'%@') VALUES ('%@','%@','%@')",@"PERSIONFO",@"NAME",@"AGE",@"SEX",@"张三",@"23",@"西城区"];
    char *err;
    if (sqlite3_exec(database, [sql1 UTF8String], NULL, NULL, &err)!=SQLITE_OK) {
        sqlite3_close(database);
        NSLog(@"数据库操作失败!");
        NSLog(@"%s",err);
    }
}

解释:INSERT INTO tablename  向tablename表内的(列名称)VALUES 插入(相应的数据)

第四:查询

-(void)searchSqlite{
    NSString*sqlQuery=@"SELECT * FROM PERSONINFO";
    sqlite3_stmt *statement;
    if (sqlite3_prepare_v2(database, [sqlQuery UTF8String], -1, &statement, NULL)==SQLITE_OK) {
        while (sqlite3_step(statement)==SQLITE_OK) {
//            char *name=(char*)sqlite3_column_text(statement, 1);
            NSString*string=[NSString stringWithUTF8String:sqlite3_column_text(statement, 1)];
            NSLog(@"%@",string);;
        }
    }
}

解释:SELECT * FROM PERSONINFO 从PERSONINFO中取出所有数据

   sqlite3_prepare_v2(database, [sqlQuery UTF8String], -1, &statement, NULL)  参数1.数据库类 参数2.sql语句  参数3.字节的最大长度-1无限制 参数4.输出语句句柄 参数5.输出未使用部分指针    语句返回每行符合过滤的数据

   sqlite3_step(statement)  每步获取一行数据

最后:关闭数据库

-(void)closeSqlite{
    sqlite3_close(database);
}
原文地址:https://www.cnblogs.com/chaochaobuhuifei55/p/5435029.html