0

基本的に、データベースにすべてのテキストフィールド値を入力してから、Webサービスへの送信に使用する必要があります。したがって、1つの列の詳細がサービスに送信されると、その列を削除する必要があります。私はこれをしました:

-(void)deleteTableDataFromSavedDataTable:(NSString *)lastID {
    NSString *sql_str=[NSString stringWithFormat:@"DELETE FROM FormInfoValues where Phone = %@",lastID];

    const char *sql = [sql_str UTF8String];

    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
    {
        NSLog(@"sql delete statement is ");

        sqlite3_stmt *deleteStmt;
        if(sqlite3_prepare_v2(database, sql, -1, &deleteStmt, NULL) == SQLITE_OK)
        {
            NSLog(@"sql delete statement is %@", deleteStmt);
            if(sqlite3_step(deleteStmt) != SQLITE_DONE )
            {
                NSLog( @"Error: %s", sqlite3_errmsg(database) );
            }
            else
            {
                NSLog( @"row id = %lld", (sqlite3_last_insert_rowid(database)+1));
                NSLog(@"No Error");
            }
        }
        sqlite3_finalize(deleteStmt);
    }
    sqlite3_close(database);
}

ただし、送信後に削除されません。なぜそれは呼び出さないのですか?アイデアをください。

4

1 に答える 1

1

問題を正しく理解していない可能性があります。その場合は、事前にお詫び申し上げます。

について:「...次に、その列を削除する必要があります。」

-列のデータを(ゼロ、空の文字列、またはNULLに設定して)クリアする場合は、SQLでUPDATEコマンドを使用する必要があります。DELETEコマンドは、常にROWSを削除します。

--テーブルのスキーマから本当に列を削除する必要がある場合は、sqliteで新しいテーブルを作成する必要があります。(Sqliteを使用すると、ALTER TABLEコマンドを使用して列を追加できます。他の一部のデータベースでは、ALTER TABLEを使用して列を削除することもできます。)次の例を使用して、テーブルを(制約などなしで)すばやくコピーできます。

MyOriginalからSELECTa、b、d、f、h、zとしてテーブルMyOutputを作成します。

--出力がSELECTステートメントによって作成されている場合は、「*」の使用を避け、含める列のみを指定してください。

于 2012-06-14T18:40:15.700 に答える