您的位置:首页 > 其它

深入了解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;

下篇继续。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: