0

患者を追加および削除できる機能を備えたアプリがあります。それらを削除するときに問題に遭遇しましたが、それは問題なく機能します。

SQL ステートメントは次のとおりです。

-(void) deleteTreatmentTypeFromDatabase:(NSString *)deleteid {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsPath = [paths objectAtIndex:0];
    NSString *filePath = [documentsPath stringByAppendingPathComponent:@"patients.sqlite"];

    sqlite3 *database;

    if(sqlite3_open([filePath UTF8String], &database) == SQLITE_OK) {
        const char *sqlStatement = "delete from records WHERE id = ?";
        sqlite3_stmt *compiledStatement;
        NSLog(@"%d", sqlite3_prepare(database, sqlStatement, -1, &compiledStatement, NULL));
        if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
//            LSAppDelegate *delegate = (LSAppDelegate *)[[UIApplication sharedApplication] delegate];
//            Record *thisRecord = [delegate.records objectAtIndex:index.row];
            sqlite3_bind_text(compiledStatement, 1, [deleteid UTF8String], -1, SQLITE_TRANSIENT);
        }
        if(sqlite3_step(compiledStatement) == SQLITE_DONE) {
            sqlite3_finalize(compiledStatement);
        }
    }
    sqlite3_close(database);
}

チェックしたときにSQLにエラーはないと言っているので、今は元気で本当に行き詰まっています。

さらにコードが必要な場合は言ってください

前もって感謝します

4

2 に答える 2

0

このようにしてみて、

static sqlite3 *database = nil;

static sqlite3_stmt *deleteStmt = nil;

if(deleteStmt == nil) {
        const char *sql = "delete from Project where ProjectID = ?";
        if(sqlite3_prepare_v2(database, sql, -1, &deleteStmt, NULL) != SQLITE_OK)
            NSAssert1(0, @"Error while creating delete statement. '%s'", sqlite3_errmsg(database));
    }
    sqlite3_bind_int(deleteStmt, 1, primaryKey);

    if (SQLITE_DONE != sqlite3_step(deleteStmt)) 
        NSAssert1(0, @"Error while deleting. '%s'", sqlite3_errmsg(database));

    sqlite3_reset(deleteStmt);
于 2013-07-20T09:55:34.240 に答える
-1

これを試して、

-(void) deleteTreatmentTypeFromDatabase:(NSString *)deleteid {

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsPath = [paths objectAtIndex:0];
    NSString *filePath = [documentsPath stringByAppendingPathComponent:@"patients.sqlite"];

    sqlite3 *database;

    if(sqlite3_open([filePath UTF8String], &database) == SQLITE_OK)
    {
        NSString *query = [NSString stringWithFormat:@"delete from records WHERE id = %@", deleteid];
        sqlite3_stmt *compiledStatement;

        if (sqlite3_prepare_v2(database, [query UTF8String], -1, &compiledStatement, nil) == SQLITE_OK)
        {
          if(sqlite3_step(compiledStatement) == SQLITE_DONE) 
            {
               sqlite3_finalize(compiledStatement);
            }
        }
       sqlite3_close(database);
    }
}
于 2013-07-20T10:52:13.373 に答える