您的位置:首页 > 其它

深入了解FMDB<三>

2016-01-29 17:59 381 查看
好了,我们之前说过,FMDB��️三个重要的类,我们之前已经讲了两个FMDatabase和FMDatabaseQueue,今天来讲第三个,就是FMResultSet。这个类,顾名思义,就是一个数据集,返回多条数据时FMDB会将数据放在这个结果集中,然后我们再对这个结果集进行查询操作。FMResultSet中给我们提供了很多的方法来操作结果集。

/** Create result set from `<FMStatement>`

@param statement A `<FMStatement>` to be performed

@param aDB A `<FMDatabase>` to be used

@return A `FMResultSet` on success; `nil` on failure

*/

从FMStatement这个来创建一个结果集

+ (instancetype)resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB;

/** Retrieve next row for result set.

You must always invoke `next` or `nextWithError` before attempting to access the values returned in a query, even if you're only expecting one.

@return `YES` if row successfully retrieved; `NO` if end of result set reached

@see hasAnotherRow

*/

每次操作我么都必须来调下边的next方法

- (BOOL)next;

别的常用方法,根据需要调用,反正我是用到的很少:

- (int)columnCount;

- (int)columnIndexForName:(NSString*)columnName;

- (NSString*)columnNameForIndex:(int)columnIdx;

- (int)intForColumn:(NSString*)columnName;

- (int)intForColumnIndex:(int)columnIdx;

- (long)longForColumn:(NSString*)columnName;

- (long)longForColumnIndex:(int)columnIdx;

- (long long int)longLongIntForColumn:(NSString*)columnName;

- (long long int)longLongIntForColumnIndex:(int)columnIdx;

- (unsigned long long int)unsignedLongLongIntForColumn:(NSString*)columnName;

- (unsigned long long int)unsignedLongLongIntForColumnIndex:(int)columnIdx;

- (BOOL)boolForColumn:(NSString*)columnName;

- (BOOL)boolForColumnIndex:(int)columnIdx;

- (double)doubleForColumn:(NSString*)columnName;

- (double)doubleForColumnIndex:(int)columnIdx;

- (NSString*)stringForColumn:(NSString*)columnName;

- (NSString*)stringForColumnIndex:(int)columnIdx;

- (NSDate*)dateForColumn:(NSString*)columnName;

- (NSDate*)dateForColumnIndex:(int)columnIdx;

- (NSData*)dataForColumn:(NSString*)columnName;

- (NSData*)dataForColumnIndex:(int)columnIdx;

- (const unsigned char *)UTF8StringForColumnName:(NSString*)columnName;

- (const unsigned char *)UTF8StringForColumnIndex:(int)columnIdx;

/** Result set object for column.

@param columnName `NSString` value of the name of the column.

@return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object.

@see objectForKeyedSubscript:

*/

- (id)objectForColumnName:(NSString*)columnName;

/** Result set object for column.

This method allows the use of the "boxed" syntax supported in Modern Objective-C. For example, by defining this method, the following syntax is now supported:

id result = rs[@"employee_name"];

This simplified syntax is equivalent to calling:

id result = [rs objectForKeyedSubscript:@"employee_name"];

which is, it turns out, equivalent to calling:

id result = [rs objectForColumnName:@"employee_name"];

@param columnName `NSString` value of the name of the column.

@return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object.

*/

- (id)objectForKeyedSubscript:(NSString *)columnName;

/** Result set object for column.

This method allows the use of the "boxed" syntax supported in Modern Objective-C. For example, by defining this method, the following syntax is now supported:

id result = rs[0];

This simplified syntax is equivalent to calling:

id result = [rs objectForKeyedSubscript:0];

which is, it turns out, equivalent to calling:

id result = [rs objectForColumnName:0];

@param columnIdx Zero-based index for column.

@return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object.

*/

- (id)objectAtIndexedSubscript:(int)columnIdx;

/** Result set `NSData` value for column.

@param columnName `NSString` value of the name of the column.

@return `NSData` value of the result set's column.

@warning If you are going to use this data after you iterate over the next row, or after you close the

result set, make sure to make a copy of the data first (or just use `<dataForColumn:>`/`<dataForColumnIndex:>`)

If you don't, you're going to be in a world of hurt when you try and use the data.

*/

- (NSData*)dataNoCopyForColumn:(NSString*)columnName NS_RETURNS_NOT_RETAINED;

/** Result set `NSData` value for column.

@param columnIdx Zero-based index for column.

@return `NSData` value of the result set's column.

@warning If you are going to use this data after you iterate over the next row, or after you close the

result set, make sure to make a copy of the data first (or just use `<dataForColumn:>`/`<dataForColumnIndex:>`)

If you don't, you're going to be in a world of hurt when you try and use the data.

*/

- (NSData*)dataNoCopyForColumnIndex:(int)columnIdx NS_RETURNS_NOT_RETAINED;

/** Is the column `NULL`?

@param columnIdx Zero-based index for column.

@return `YES` if column is `NULL`; `NO` if not `NULL`.

*/

- (BOOL)columnIndexIsNull:(int)columnIdx;

/** Is the column `NULL`?

@param columnName `NSString` value of the name of the column.

@return `YES` if column is `NULL`; `NO` if not `NULL`.

*/

- (BOOL)columnIsNull:(NSString*)columnName;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: