2011-01-21 4 views
4

내 tableView에 표시되는 배열의 모든 객체를 제거하는 버튼을 만들었습니다. 그런 다음 데이터를 다시로드하고 tableview가 비어 있습니다. 하지만 SQLite 데이터베이스뿐만 아니라 배열에서 모든 데이터를 삭제할 수 있습니까? 이제 데이터를 다시 시작할 때 발생합니다.SQLite delete 구문을 사용하여 모든 데이터 삭제?

버튼 무효 :

- (void) deleteAllButton_Clicked:(id)sender { 

    [appDelegate removeAllBooks:nil]; 
    [self.tableView reloadData]; 


    } 

AppDelegate에 무효 : Book.m에서

-(void) removeAllBooks:(Book *)bookObj { 
//Delete it from the database. 
[bookObj deleteAllBooks]; 

//Remove it from the array. 
[bookArray removeAllObjects]; 
} 

삭제 구문

- (void) deleteAllBooks { 
if(deleteStmt == nil) { 
    const char *sql = "WHAT DO I HAVE TO DO TO DELETE ALL THE ROWS?"; 
    if(sqlite3_prepare_v2(database, sql, -1, &deleteStmt, NULL) != SQLITE_OK) 
    NSAssert1(0, @"Error while creating delete statement. '%s'", sqlite3_errmsg(database)); 
} 

//When binding parameters, index starts from 1 and not zero. 
sqlite3_bind_int(deleteStmt, 1, bookID); 

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

sqlite3_reset(deleteStmt); 
} 

답변

19

음, 일반 SQL 구문이 될 것이다 나는 이것을 시도 :

DELETE FROM tablename 
+0

보다 더 ID가 존재하지 않기 때문에이 테이블의 모든 행을 삭제하는 경우 문제가 무엇인지 알아 내라. 삭제 구문에 NSLog를 삽입했을 때 나는 아무런 반응을 얻지 못했습니다. 즉, appDelegate void가 book.m에 삭제를 수행하라는 메시지를 보내지 않는다는 것을 의미합니다 ... 버튼 동작이있는 RootViewcontroller에서 deleteAllBooks 메서드에 어떻게 액세스합니까? – Leif

+0

hvis du skjønte hva jeg mente ... – Leif

+2

아니, 그게 무슨 뜻인지 잘 모르겠다. 테이블의 모든 행을 삭제하는 SQL이 내 대답에 쓴 것입니다. 그것이 질문이 아니면, 당신이 정말로 묻고있는 것을 분명히해야합니다. 나는 iOS 질문 (또는 NSAssert의 출처는 무엇이든간에)을 도와 드릴 수 없습니다. –

2

DELETE FROM tablename 나를 위해 작동하지 않습니다. 나는 iPhone에서 sqlite3 데이터베이스를 사용하고 있었는데 포스터가 있다고 가정합니다. 나는 아직도 (모든 행없이) 존재하는 테이블을 원한다면

DROP table tablename 

가하는 CREATE 문 뒤에 : 제가 작업이를 얻기 위해, 나는 할 필요가 있었다.

물론이 경우에는 CREATE 문을 알아야합니다. Firefox 용 SQLManager 플러그인을 사용하면 정확한 리버스 엔지니어링을 통해 CREATE 문을 사용할 수 있습니다. DELETE FROM tablename가 작동하지 않는 이유를 결코 알지 못했지만 내 경우에는 분명히 그렇지 않았습니다.

6

당신은 표준 주 id 컬럼이 (당신은해야한다) 당신은

DELETE FROM tablename WHERE id > -1; 

을 할 수있는 그리고 내가 찾은 0

+6

'DELETE FROM tablename'을 호출하지 않는 이유는 무엇입니까? –

+0

질문이 변경되었다고 생각합니다 ... – Zigglzworth

관련 문제