0

プロジェクトで FMDB を使用しています。ターミナルで最初の sqlite3 データベースを構築し、プロジェクトにロードしました。後でそのデータベースにいくつかの変更を加えたので、プロジェクトから削除し(ゴミ箱に移動)、もう一度「ファイルを追加」しました。ただし、実行結果は以前のデータベースと一致しているように見えたり、クエリ結果がまったくない場合もあります。また、データベースを削除してプロジェクトを実行しようとしましたが、まだエラーなしで実行されています...さらに、新しいデータベースを別の名前でインポートしましたが、どちらも機能しません。では、objective-c でデータベースを完全に削除してリロードするために必要な追加の操作はありますか? ありがとう!

私のコードは以下のように表示されます:

- (IBAction)submitButton:(id)sender {        
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"finalCarpool.db"];
    FMDatabase* db = [FMDatabase databaseWithPath:writableDBPath];

    NSLog(@"Is SQLite compiled with it's thread safe options turned on? %@!", [FMDatabase isSQLiteThreadSafe] ? @"Yes" : @"No");
    if (![db open]) {
        NSLog(@"Could not open db.");
    }
    FMResultSet *rs = [db executeQuery:@"select * from userinfo"];
    int count=0;
    while ([rs next]) {
        count++;
        NSLog(@"%i",count);

    }
    FMResultSet *rs2 = [db executeQuery:@"select id from userinfo where username = ? AND password= ?", usernameTextField.text,passwordTextField.text];
    if ([rs2 next]) {

        NSString *welcomeMessage=[[NSString alloc]initWithFormat:@"Welcome, %@",usernameTextField.text];
        UIAlertView *myAlert = [[UIAlertView alloc]
                                initWithTitle:@"Successfully Login!"
                                message:welcomeMessage
                                delegate:nil
                                cancelButtonTitle:@"Okay"
                                otherButtonTitles:nil];
        [myAlert show];

        [self.loginDelegate backToLaunch];
    }
    else {
        UIAlertView *myAlert = [[UIAlertView alloc]
                                initWithTitle:@"Something is wrong..."
                                message:@"Your username and/or password doesn't match!Please try again!"
                                delegate:nil
                                cancelButtonTitle:@"Okay"
                                otherButtonTitles:nil];
        [myAlert show];
        usernameTextField.text=Nil;
        passwordTextField.text=Nil;
    }
[usernameTextField resignFirstResponder];
[passwordTextField resignFirstResponder];

}

4

2 に答える 2

0

シミュレーターでテストしている場合、データベース パスは次のとおりです。

~/Library/Application Support/iPhone Simulator/<SIMULATOR-VERSION>/Applications/<APP-NAME>/Documents/finalCarpool.db

そこから削除できます。それ以外の場合は、シミュレーターからアプリケーションを削除するだけです (iPhone から行うのと同じ方法で)。

于 2013-04-10T21:56:54.967 に答える