深入了解FMDB<一>

今天公司项目需要,需要在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;

 调用这个方法也就是如果数据库存在,就打开,如果数据库不存在,那么就先创建再打开。

/** 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;


Hope To Help You !


技术交流群:141624834 进群请说你看的那篇博客,我们一起探讨成长



下篇继续。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值