私は次のコードを持っています(このチュートリアルから変更されたコード):
-(NSMutableArray *) getChampionDatabase
{
NSMutableArray *championsArray = [[NSMutableArray alloc] init];
@try {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *databasePath = [[NSBundle mainBundle]pathForResource: @"Champions Database" ofType:@"sqlite"];
BOOL success = [fileManager fileExistsAtPath:databasePath];
if (!success)
{
NSLog(@"cannot connect to Database! at filepath %@",databasePath);
}
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
{
const char *sql = "SELECT CHAMPION_ID,CHAMPION_NAME,CHAMPION_IMG FROM CHAMPIONS";
sqlite3_stmt *sqlStatement;
if(sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) == SQLITE_OK)
{
while (sqlite3_step(sqlStatement)==SQLITE_ROW) {
championList *ChampionList = [[championList alloc]init];
ChampionList.championId = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,0)];
ChampionList.championName = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,1)];
ChampionList.championImage = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 2)];
[championsArray addObject:ChampionList];
}
}
else
{
NSLog(@"problem with database prepare");
}
}
else
{
NSLog(@"problem with database openning");
}
}
@catch (NSException *exception)
{
NSLog(@"An exception occured: %@", [exception reason]);
}
@finally
{
return championsArray;
}
}
このコードを実行した後、私は常に出力を持っています:「データベースの準備に関する問題」
次に、次のコードでsqlite3_prepareのエラー番号を確認しようとしました。
int ret = sqlite3_prepare(database, sql, -1, &sqlStatement, NULL);
if (ret != SQLITE_OK) {
NSLog(@"Error calling sqlite3_prepare: %d", ret);
}
出力: "sqlite3_prepareの呼び出しエラー:26"
エラー26 -/*データベースファイルではないファイルが開かれました*/
ファイルにはsqlite3バージョンがあります
これはどのように可能ですか?ファイル拡張子は.sqliteで、sqliteマネージャーで変更できます