IOS 开发学习33 使用sqlite3
2015-06-09 13:40
399 查看
sqlite3 命令行简单使用
sqlite3 路径 //打开数据库路径连接select * from sqlite_master where type=”table”; //显示所有表结构
select * from testable; //显示某张表数据
.tables //查看表
.help //查看帮助
.quit //退出
xcode使用sqlite3步骤
1.添加libsqlite3.dylib
2.头文件
// // DbUtils.h // smart // // Created by 谢厂节 on 15/5/12. // Copyright (c) 2015年 WHR. All rights reserved. // #import <Foundation/Foundation.h> #import "sqlite3.h" @interface DbUtils : NSObject { sqlite3 *db; //声明一个sqlite3数据库 } - (NSString *)filePath;//数据库文件的路径。一般在沙箱的Documents里边操作 -(void)openDB; -(void)closeDB; -(NSMutableArray *)getAllTypes; @end
.m文件
// // DbUtils.m // smart // // Created by 谢厂节 on 15/5/12. // Copyright (c) 2015年 WHR. All rights reserved. // #import "DbUtils.h" #import "KMTypes.h" #import "KMContents.h" @implementation DbUtils //打开数据库的方法 - (void)openDB{ ///文件是否存在 NSFileManager* fileManager = [NSFileManager defaultManager]; NSString *dbpath=[self filePath]; NSLog(@"database path:%@",dbpath); BOOL success = [fileManager fileExistsAtPath:dbpath]; if (!success) { NSString *resourcePath=[[NSBundle mainBundle]resourcePath]; //自动复制 NSString *sourceDBPath=[resourcePath stringByAppendingPathComponent:@"app.bundle/datas.sqlite"]; NSError *error; success = [fileManager copyItemAtPath:sourceDBPath toPath:dbpath error:&error]; if(!success) NSAssert1(0,@"数据库附加失败!'%@'.", [error localizedDescription]); else NSLog(@"数据库附加成功:%@",dbpath); } if (sqlite3_open([[self filePath] UTF8String], &db) != SQLITE_OK) { sqlite3_close(db); NSAssert(0, @"数据库打开失败。"); } } - (void)closeDB{ sqlite3_close(db); } //该方法用于返回数据库在Documents文件夹中的全路径信息 - (NSString *)filePath{ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDir = [paths objectAtIndex:0]; return [documentsDir stringByAppendingPathComponent:@"datas.sqlite"]; } ////查询数据所有类别 - (NSMutableArray *)getAllTypes{ [self openDB]; NSMutableArray *array=[NSMutableArray arrayWithCapacity:6 ]; NSString *sql = @"SELECT * FROM km_types"; sqlite3_stmt *statement; if (sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil) == SQLITE_OK) { while (sqlite3_step(statement) == SQLITE_ROW) { KMTypes* k= [[KMTypes alloc]init]; int type_id = (int)sqlite3_column_int(statement,0); int parent_id = (int)sqlite3_column_int(statement,1); char *type_title = (char *)sqlite3_column_text(statement, 2); int type_order = (int)sqlite3_column_int(statement,3); int topic_count=(int)sqlite3_column_int(statement,4); NSString *type_titleStr = [[NSString alloc] initWithUTF8String:type_title]; k.type_title = type_titleStr; k.type_id=type_id; k.parent_id = parent_id; k.type_order = type_order; k.topic_count=topic_count; [array addObject:k]; } sqlite3_finalize(statement); } [self closeDB]; return array; } @end 这里只实现一个简单的查询功能。
相关文章推荐
- redis执行流程源码分析
- 方法说---mac下安装homebrew与mongodb
- C#访问MySQL数据库
- mysql主从数据库不同步的3种解决方法
- memcache
- oracle优化(一) oracle数据库使用 TIMESTAMP(6)类型保存年月日时分秒
- MySQL主(Master)从(Slave)备份;
- Oracle Java JDBC: Get Primary Key Of Inserted Record
- Ubuntu 安装mysql和简单操作
- postgreSQL连接池pgbouncer的使用
- Mybatis学习笔记-动态sql
- Redis-事务总结
- Hive—Hbase—Sqoop—Mysql
- Mysql导入导出工具Mysqldump和Source命令用法详解
- mysql存储邮箱地址报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 解决办法
- 理解MySQL——索引与优化
- Memcache缓存数据库
- mysql 备库重做步骤
- mysql:基本原理和使用
- 【mysql5.6】下载安装