このプログラムを実行してSQLiteデータベースに接続すると、パステストをパスしてデータベースを開き、SQLは実際のデータベースで動作します。次に、sqlite3_prepareステートメントを実行しようとすると失敗します。これは、1 - SQLエラーまたは欠落したデータベースのコードで終了します。その後、データベースから取得したデータを読み込もうとするまで、プログラムを継続します。 SQLエラーまたはsqlite3_prepareステートメントのデータベースコードが見つからないために何も得られなかったため、失敗します。私は間違っているコードの部分を探しています/ sqlite3_preparedステートメントで成功するように修正することができます。sqlite3_prepare()の問題Objective C
#import "contactDAO.h"
#import "contact.h"
@implementation contactDAO
- (NSMutableArray *) getList{
NSMutableArray *contactArray = [[NSMutableArray alloc] init];
@try {
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"iFLY.sqlite"];
BOOL success = [fileMgr fileExistsAtPath:dbPath];
if(!success)
{
NSLog(@"Cannot locate database file '%@'.", dbPath);
}
if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK))
{
NSLog(@"An error has occured.");
}
const char *sql = "SELECT reportNumber, dateEntered, country, state FROM CONTACT";
sqlite3_stmt *sqlStatement;
if(sqlite3_prepare(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK)
{
NSLog(@"Problem with prepare statement");
}
//
while (sqlite3_step(sqlStatement)==SQLITE_ROW) {
Contact *contactInfo;
contactInfo.reportNumber = sqlite3_column_int(sqlStatement, 0);
contactInfo.dateEntered = sqlite3_column_int(sqlStatement, 1);
contactInfo.country = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,2)];
contactInfo.state = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,3)];
/*contactInfo.county = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,4)];
contactInfo.town = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,5)];
contactInfo.policeContact = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,6)];
contactInfo.policeReport = sqlite3_column_int(sqlStatement, 7);
contactInfo.autopsyNumber = sqlite3_column_int(sqlStatement, 8);
contactInfo.lastSeen = sqlite3_column_int(sqlStatement, 9);
contactInfo.victimName = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,10)]; */
[contactArray addObject:contactInfo];
}
}
@catch (NSException *exception) {
NSLog(@"An exception occured: %@", [exception reason]);
}
@finally {
return contactArray;
}
}
@end
ありがとうございます!
ドキュメントディレクトリにデータベースをコピーして使用する必要があります。 – Hector
これについての回答は見つかりましたか? – Signcodeindie