我想獲得最初沒有設置自動增量並且已經有數百條記錄的SQLite數據庫中的下一個最高PK。所以我做了下面的方法,似乎它應該工作,但我無法從這得到任何結果。我還有其他幾種從數據庫中獲取數據的方法,但無法弄清楚我做錯了什麼,並且我會全神貫注,所以我想請求一些幫助。使用FMDB查詢不返回結果
- (NSInteger)getNextSubjectId {
DrillDownAppAppDelegate *appDelegate = (DrillDownAppAppDelegate *)[[UIApplication sharedApplication] delegate];
FMDatabase *database = [FMDatabase databaseWithPath:appDelegate.getDBPath];
[database open];
FMResultSet *rst = [database executeQuery:@"select max(subject_id) + 1 AS SUBJECT_ID from SUBJECT"];
NSLog(@"PRINT FIRST SUBJECT_ID = %@", [rst stringForColumnIndex:0]);
NSString *nextSubId = [rst stringForColumnIndex:0];
[database close];
NSLog(@"NEW SUBJECT_ID = %@", nextSubId);
NSInteger myInt = [nextSubId intValue];
return myInt;
// [maxSubjectId release];
}
日誌顯示:
2012-01-25 22:56:29.398行情[6992:F803] PRINT FIRST SUBJECT_ID =(空) (GDB)
頭看起來像這樣的:
// Subject.h
// DrillDownApp
#import <UIKit/UIKit.h>
@interface Subject : NSObject {
NSInteger subject_id;
NSString *category_title;
NSString *title;
BOOL isDirty;
}
- (id) initWithPrimaryKey:(NSInteger)pk;
- (void) addSubject;
- (NSInteger)getNextSubjectId;
@property (nonatomic, readwrite) BOOL isDirty;
@property (nonatomic, readonly) NSInteger subject_id;
@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) NSString * category_title;
@end
非常感謝,修復它。我知道這簡直是愚蠢的。由於初始化問題,我之前將它作爲NSString使用,但是現在已經修復,所以它直接轉換爲NSInteger,而不必轉換它。我正在檢查如何使用lastInsertRowId,但我的主鍵字段最初並未設置爲自動增量,並且不確定這是否可行。 – jroyce
很高興你的工作。最簡單的疏忽總是讓我們絆倒。 – Darren