标签:删除 div 区分 name 大小 user plist lan 如何
前言
iOS中的数据存储方式
http://www.jianshu.com/p/459c15cf6ce2
1. SQLite
2 Navicat
3. SQLite编码 (增、删、改、查)
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *dbPath = [docPath stringByAppendingPathComponent:@"student.sqlite"];
2.定义数据库
只要调用sqlite3_open方法,系统就回自动去指定的路径加载sqlite文件,如果文件不存在就会自动创建数据库文件,并且打开数据库。如果数据库文件存在就会自动打开fileName:数据库文件的地址ppDb:已经打开的数据库
3. 打开数据库
int success = sqlite3_open(dbPath.UTF8String, &_db); ///&self.db &[self db] 错误写法
if (success == SQLITE_OK) {
NSLog(@"数据库打开成功");
//创建表
/*
需要执行SQL语句的数据库对象
需要执行的SQL语句
执行成功的回掉
回调函数的参数
错误信息
*/
char *error;
NSString *sql = @"CREATE TABLE IF NOT EXISTS t_student(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,score REAL DEFAULT 0)";
/*不允许多线程同时操作,多个程序不能同时操作同一个数据库*/
success = sqlite3_exec(self.db, sql.UTF8String, NULL, NULL, &error);
if (success == SQLITE_OK) {
NSLog(@"创建表成功");
}
else {
NSLog(@"创建表失败");
}
}
else {
NSLog(@"数据打开失败");
}
4. 插入
NSString *sql = @"INSERT INTO t_student(score,name) VALUES(100,‘tt‘);";
char *error;
int success = sqlite3_exec(self.db, sql.UTF8String, NULL, NULL, &error);
if (success == SQLITE_OK) {
NSLog(@"插入成功");
}
else {
NSLog(@"插入失败");
}
5. 查询
//1. 准备查询
/*
需要查询的数据库
需要执行的查询语句
查询语句的长度,如果传递一个小于0的数系统会自动计算查询语句的长度
结果集对象
*/
sqlite3_stmt *stmt;
NSString *sql = @"SELECT * FROM t_student;";
int success = sqlite3_prepare_v2(self.db, sql.UTF8String, -1, &stmt, NULL);
if (success == SQLITE_OK) {
//2.取出查询的数据
// int row = sqlite3_step(stmt); //每次调用该方法都会跳到下一条记录
// if (sqlite3_step(stmt) == SQLITE_ROW)
while (sqlite3_step(stmt) == SQLITE_ROW) {
NSLog(@"有数据");
const unsigned char *name = sqlite3_column_text(stmt, 1);
double score = sqlite3_column_double(stmt, 2);
NSLog(@"%s,%.f",name,score);
}
}
6. 工具类封装
4. FMDB
标签:删除 div 区分 name 大小 user plist lan 如何
原文地址:http://www.cnblogs.com/share-iOS/p/7538483.html