제가 리스트뷰에 나온 데이터를 삭제를 하려고 하는데,

 

처음에 테이블을 만들때

 

 

// DB table 만들기
  String sql = "CREATE TABLE IF NOT EXISTS CATEGORY (";
  sql += "Cate_Num INTEGER not null primary key autoincrement,";
  sql += "Cate_Sub TEXT not null";
  sql += ");";

 

이렇게 autoincrement을 사용함으로써 제가 일일이 번호를 넣어주는 것을 방지하였습니다.

 

헌데 문제는 여기서 시작됐습니다.

 

제가 편하려고 autoincrement를 썼던 부분이

 

나중에 데이터를 추가/삭제를 반복 했더니

 

번호가 계속 올라가서 나중에 이 번호를 리스트뷰에 나온대로 제일 위에 있는 데이타기 때문에 ==0일때..로 if문을 만들었는데,

 

ex) 리스트 뷰

0 <- 데이터 순서

1

2

3

4

 

데이터가 삭제가 안되고 런타임 오류를 발생하였습니다.

 

그래서 제가 토스트를 이용하여 확인해 본 결과 autoincrement로 인하여 데이터를 집어넣으면 넣을 수록 숫자는 증가하게 되고

 

10번의 데이터를 집어넣었다 하여도 10개를 다 지우고 1개의 데이터를 추가시켜도 그 데이터는 1이 아니라 11이라는 값을 가지고 있는

 

것이었습니다.

 

그래서 이 부분을 어떻게 해결하면 좋을지 고민입니다.

 

혹시 좋은 방법이 없으련지 궁금합니다.

 

또 제가 DB에 저장되어 있는 마지막 번호를 넣어주려고 해보았지만,

 

1 ~ 4 의 데이터를 넣고, 2를 제외한 나머지 1,3,4를 지웠을 때,

 

그 데이터는 2의 번호를 갖고 있기 때문에,

 

lastID를 찾아서 넣어줄 경우 num = 2 로 충돌이 일어날 것이라는 예상으로 시도는 해보지 않았지만, 안봐도 비디오 일 것 같습니다.

 

어떻게 피해간다고 해도 소스가 길어지고, 이건 비효율적인 소스코딩일까 싶어서 쓰지 않았습니다.

 

혹시 좋은 아이디어를 갖고 계신분이 있으시다면 댓글 달아주시면 감사하겠습니다~

 

개인적인 메일 주소는 seodaeya@gmail.com 입니다. 메일로도 보내주시면 감사하겠습니다.