第一:创建表格
//创建表格 -(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); }