数据库
2015-11-10 12:17
411 查看
数据库:
需要导入:sqlite3添加 删除 修改数据库中的数据都用的是:sqlite3_exec
查询数据库用的是:sqlite3_prepare_v2
// 创建一个sqlite3对象 以后都操作它 static sqlite3 *db = nil; #pragma mark 1. 打开数据库 - (void)openDB { if (db == nil) { NSString *tempPath = NSTemporaryDirectory(); NSLog(@"%@", tempPath); NSString *filePath = [tempPath stringByAppendingPathComponent:@"student.sqlite"]; // 打开路径下的数据库 int result = sqlite3_open(filePath.UTF8String, &db); if (result == SQLITE_OK) { NSLog(@"打开数据库成功"); // 写sql语句(可用某些工具生成SQL语句) NSString *sql = @"CREATE TABLE IF NOT EXISTS student (number INTEGER PRIMARY KEY NOT NULL , name TEXT, age INTEGER)"; // 执行SQL语句 int result2 = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL); if (result2 == SQLITE_OK) { NSLog(@"创建表格成功"); }else NSLog(@"创建表格失败"); }else NSLog(@"打开数据库失败"); } } #pragma mark 2. 关闭数据库 - (void)closeDB { if (db != nil) { int result = sqlite3_close(db); if (result == SQLITE_OK) { NSLog(@"关闭数据库成功"); // 同时把数据库对象置空 db = nil; }else NSLog(@"关闭数据库失败"); } } #pragma mark 3. 添加数据 - (void)insertStudent:(Student *)stu { // 添加的sql语句 NSString *sql = [NSString stringWithFormat:@"INSERT INTO student (number, name, age) VALUES ('%@', '%@', '%d')", stu.number, stu.name, stu.age]; int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL); if (result == SQLITE_OK) { NSLog(@"添加数据成功"); }else NSLog(@"添加数据失败"); } #pragma mark 4. 删除数据 - (void)deleteStudent:(NSString *)num { NSString *sql = [NSString stringWithFormat:@"DELETE FROM student WHERE number = '%@'", num]; int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL); if (result == SQLITE_OK) { NSLog(@"删除数据成功"); }else NSLog(@"删除数据失败"); } #pragma mark 5. 更新数据 - (void)updateStudent:(Student *)stu { NSString *sql = [NSString stringWithFormat:@"UPDATE student SET name = '%@' , age = '%d' WHERE number = '%@'", stu.name, stu.age, stu.number]; int result = sqlite3_exec(db, sql.UTF8String, nil, nil, nil); if (result == SQLITE_OK) { NSLog(@"更新数据成功"); }else NSLog(@"更新数据失败"); } #pragma mark 6. 查询数据 - (NSMutableArray *)selectStudent { NSMutableArray *arrayAll = [NSMutableArray array]; // 有条件的查询 直接加一个where语句就可以啦 NSString *sql = [NSString stringWithFormat:@"SELECT * FROM student"]; // 游标 sqlite3_stmt *stmt = nil; // int nByte为-1时:自动计算sql语句的长度 int result = sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt, NULL); if (result == SQLITE_OK) { NSLog(@"开始查找数据"); // 一行一行的去查找数据 直到找完 while (sqlite3_step(stmt) == SQLITE_ROW) { // 获取number const char *num1 = (const char *)sqlite3_column_text(stmt, 0);// 第二个参数递增 NSString *number = [NSString stringWithCString:num1 encoding:NSUTF8StringEncoding]; // 获取name const char *name1 = (const char *)sqlite3_column_text(stmt, 1); NSString *name = [NSString stringWithCString:name1 encoding:NSUTF8StringEncoding]; // 获取age int age = sqlite3_column_int(stmt, 2); // 把取到的数据放到数据模型中 Student *stu = [[Student alloc] init]; stu.name = name; stu.number = number; stu.age = age; [arrayAll addObject:stu]; } }else NSLog(@"查询失败"); // 游标用完之后要释放: sqlite3_finalize(stmt); return arrayAll; }第三方FMDB 也类似,比这个简单 在“自己看的东西”里有提到
相关文章推荐
- MySQL备份与恢复
- 谈谈Memcached与Redis
- SQL Server创建数据库和数据表的相关约束实现方法
- 连接oracle服务器超慢--原因分析
- oracle 查看表空间使用率
- LoadRunner访问Mysql数据库(转)
- MySQL与PostgreSQL比较 哪个数据库更好
- oracle表的管理,数据类型简单理解
- [oracle]数据库进程查看
- oracle基本使用
- Linux 下Oracle 创建用户和用户表空间
- rlwrap安装之后无法使用
- 查询oracle中正在运行的sql语句,不包括plsql执行的查询语句
- mysql添加索引命令
- Oracle使用row_number()函数查询时增加序号列
- SQL 并联更新
- Mysql log参数
- 启动mysql服务,提示1067
- Redis 起步
- Sql 递归算法 取得某个节点下面所有的节点