所以我想在SQL應用程序中使用SQLite,我正在使用sqlite3庫。我能夠訪問數據庫,甚至可以查詢;實際上查詢訪問確切的數據,但由於某種原因,我回來的字符串是一個長整數,而不是我正在尋找的字符串。下面是數據庫,代碼:iPhone SQLite數據庫讀寫
Filename: Package.sql Table Lessons LessonID VARCHAR(64) Primary Key | LessonName VARCHAR(100) | EntryDate (DATETIME) | Chrono VARCHAR (20) bfow02nso9xjdo40wksbfkekakoe29ak | Learning The History | 2010-08-05 16:24:35 | 0001
和iPhone代碼
... -(NSString *)getRow:(NSString *)tablename where:(NSString *)column equals:(NSString *)value { const char *query = [[[[[[[@"SELECT * FROM `" stringByAppendingString:tablename] stringByAppendingString:@"` WHERE `"] stringByAppendingString:column] stringByAppendingString:@"` = '"] stringByAppendingString:value] stringByAppendingString:@"';"] cStringUsingEncoding:NSUTF8StringEncoding]; NSString *result; if(sqlite3_open([dbpath UTF8String], &database) == SQLITE_OK) { sqlite3_stmt *compiledQuery; if(sqlite3_prepare_v2(database, query, -1, &compiledQuery, NULL) == SQLITE_OK) { while(sqlite3_step(compiledQuery) == SQLITE_ROW) { NSString *str_temp = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledQuery, 2)]; result = str_temp; } sqlite3_finalize(compiledQuery); } sqlite3_close(database); } return result; } ...
當代碼執行:
CDatabase *db = [[CDatabase alloc]initWithDatabase:@"Package.sql"]; NSString *result = [db getRow:@"Lessons" where:@"Chrono" equals:@"0001"];
返回值的NSString *結果爲 「1364111」 的值。爲什麼這樣做?它應該是「學習歷史」
您應該嘗試Gus Mueller的FMDatabase。我在我的項目中使用它,它很好地完成了這項工作。 (如果你打算在整個應用程序中使用它,請記住保留FMDatabase對象。) – 2010-08-26 01:31:23