深入了解FMDB<一>
2016-01-27 19:48
513 查看
今天公司项目需要,需要再FMDB基础上进行一次封装,好吧,我之前只是用用它,封装FMDB?吓我一跳,没办法,我就只能静下心来好好看看FMDB,以前都是就用那么几个方法,也没想着好好研究,好吧,研究吧。
As we know,FMDB is a SQLITE objective-c wrapper.FMDB have three important class,they are FMDatabase,FMResultSet,FMDatabaseQueue.
根据文档介绍:
一:创建FMDatabase对象
创建一个FMDatabase��️三种方法,
第一:文件系统路径。这个文件不一定要再硬盘上存在,如果不存在,可以由我们自己创建。
第二:一个空字符串。空数据库可以再一个临时位置创建,在“FMDatabase”关闭的时候会被删掉。
第三:‘nil’内存数据库,顺便普及一下,内存数据库(内存数据库是一种依赖于主存作为数据存储介质的一种数据库管理系统,相比传统的基于磁盘的数据库管理系统,内存数据库会快很多,建成“IMDB”),这个数据库也会随着FMDatabase的关闭而被销毁。
例如:在iOS上,我们可以在app的‘documents’目录下打开(创建)一个数据库:
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];
NSString *dbPath = [docPath stringByAppendingPathComponent:@"test.db"];
FMDatabase *db = [FMDatabase databaseWithPath:dbPath];
好了,一个数据库就对象就创建出来了。
@param inPath Path of database file(数据库文件的路径)
@return `FMDatabase` object if successful; `nil` if failure.
+ (instancetype)databaseWithPath:(NSString*)inPath;
二:打开一个新的数据库连接
The database is opened for reading and writing, and is created if it does not already exist.
@return `YES` if successful, `NO` on error.
@see [sqlite3_open()](http://sqlite.org/c3ref/open.html)
@see openWithFlags:
@see close
*/
- (BOOL)open;
调用这个方法也就是如果数据库存在,就打开,如果数据库不存在,那么就先创建再打开。
今天没时间了,完成了��️20分之一左右,太庞大,明天接着写
/** The path of the database file
@return path of database.
就是要数据库的路径
*/
- (NSString *)databasePath;
/** The underlying SQLite handle
@return The `sqlite3` pointer.
返回‘Sqlite3’的句柄
*/
- (sqlite3*)sqliteHandle;
/*
可以设置数据库的时间,但是需要注意的是因为’NSDateFormat‘是不是线程安全的,所以说调用这个方法必须是一个单例
*/
+ (NSDateFormatter *)storeableDateFormat:(NSString *)format;
/** Usage count */
@property (atomic, assign) long useCount;
/** SQL statement */
数据库的一些属性,知道当前数据库的状态
@property (atomic, retain) NSString *query;
/** SQLite sqlite3_stmt
@see [`sqlite3_stmt`](http://www.sqlite.org/c3ref/stmt.html)
*/
@property (atomic, assign) sqlite3_stmt *statement;
/** Indication of whether the statement is in use */
@property (atomic, assign) BOOL inUse;
///----------------------------
/// @name Closing and Resetting
///----------------------------
/** Close statement */
- (void)close;
/** Reset statement */
- (void)reset;
下篇继续。。。。。
As we know,FMDB is a SQLITE objective-c wrapper.FMDB have three important class,they are FMDatabase,FMResultSet,FMDatabaseQueue.
根据文档介绍:
一:创建FMDatabase对象
创建一个FMDatabase��️三种方法,
第一:文件系统路径。这个文件不一定要再硬盘上存在,如果不存在,可以由我们自己创建。
第二:一个空字符串。空数据库可以再一个临时位置创建,在“FMDatabase”关闭的时候会被删掉。
第三:‘nil’内存数据库,顺便普及一下,内存数据库(内存数据库是一种依赖于主存作为数据存储介质的一种数据库管理系统,相比传统的基于磁盘的数据库管理系统,内存数据库会快很多,建成“IMDB”),这个数据库也会随着FMDatabase的关闭而被销毁。
例如:在iOS上,我们可以在app的‘documents’目录下打开(创建)一个数据库:
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];
NSString *dbPath = [docPath stringByAppendingPathComponent:@"test.db"];
FMDatabase *db = [FMDatabase databaseWithPath:dbPath];
好了,一个数据库就对象就创建出来了。
@param inPath Path of database file(数据库文件的路径)
@return `FMDatabase` object if successful; `nil` if failure.
+ (instancetype)databaseWithPath:(NSString*)inPath;
二:打开一个新的数据库连接
The database is opened for reading and writing, and is created if it does not already exist.
@return `YES` if successful, `NO` on error.
@see [sqlite3_open()](http://sqlite.org/c3ref/open.html)
@see openWithFlags:
@see close
*/
- (BOOL)open;
调用这个方法也就是如果数据库存在,就打开,如果数据库不存在,那么就先创建再打开。
今天没时间了,完成了��️20分之一左右,太庞大,明天接着写
/** The path of the database file
@return path of database.
就是要数据库的路径
*/
- (NSString *)databasePath;
/** The underlying SQLite handle
@return The `sqlite3` pointer.
返回‘Sqlite3’的句柄
*/
- (sqlite3*)sqliteHandle;
/*
可以设置数据库的时间,但是需要注意的是因为’NSDateFormat‘是不是线程安全的,所以说调用这个方法必须是一个单例
*/
+ (NSDateFormatter *)storeableDateFormat:(NSString *)format;
/** Usage count */
@property (atomic, assign) long useCount;
/** SQL statement */
数据库的一些属性,知道当前数据库的状态
@property (atomic, retain) NSString *query;
/** SQLite sqlite3_stmt
@see [`sqlite3_stmt`](http://www.sqlite.org/c3ref/stmt.html)
*/
@property (atomic, assign) sqlite3_stmt *statement;
/** Indication of whether the statement is in use */
@property (atomic, assign) BOOL inUse;
///----------------------------
/// @name Closing and Resetting
///----------------------------
/** Close statement */
- (void)close;
/** Reset statement */
- (void)reset;
下篇继续。。。。。
相关文章推荐
- ubuntu中安装机器学习包(python)和安装pycharm
- C++小实验:在C++中实现类似于动态语言函数定义的宏
- javax.validation.ConstraintViolationException---Hibernate后台实体校验
- 有盟分享开发存在的一些问题
- VTK Examples中MIP和MPR的功能实现与源码分析
- Swift 基本知识点之二集合介绍
- POJ 3984 迷宫问题 bfs
- HDU 1829 - A Bug's Life
- HDU 1560 DNA sequence(BFS+hash)
- 选择表单html
- install eigen in ubuntu and use it in qt
- 学习Slim Framework for PHP v3 (六)--route怎么被匹配的?
- Swift 类,结构体,枚举使用总结
- ORACLE PILE 与 SPFILE
- 云盘部署过程
- 2015年最新苹果开发者账号注册流程详解
- 多线程-CountDownLatch
- 安卓listview嵌套gridview时,造成listview的item无法获取焦点的问题
- install glm library in ubuntu and use it in qt
- android webView.loadData乱码问题的解决