2012-02-06 6 views
0

간단한 데이터베이스 삽입 문으로 어려움을 겪은 것 같습니다. 데이터베이스에 뭔가를 삽입하고 (디버깅 이유로) 행 수를 확인합니다. 첫 번째 예에서는 이것이 작동하지 않습니다. 두 번째 "rawQuery"에서는 그렇지 않습니다. 나는 간단한 것을 간과하고 있는가? 전에 문제없이이 방법을 여러 번 사용했습니다!간단한 insert 문이 작동하지 않습니다. SqLite

이 작동하지 않습니다

contentValues = new ContentValues(); 
contentValues.put("classId", cursor.getString(0)); 
contentValues.put("to_do", toDo); 
contentValues.put("date", date); 
out("SIZE OF TODO+"+fetchCount());//returns 105 
db.insert("toDo", null, contentValues); 
out("NEW SIZE OF TODO+"+fetchCount());//still returns 105! 

이 수행합니다

out("SIZE OF TODO+"+fetchCount()); //returns 105 
db.execSQL("insert into toDo values(null, "+cursor.getString(0)+", '"+toDo+"', '"+date+"')"); 
out("NEW SIZE OF TODO+"+fetchCount());//returns 106 

뭐가 잘못이야?

+0

첫 번째 방법에 대한 로그는 무엇입니까? – waqaslam

+0

두 메서드 막대에 대해 Eclipse에서 관련 로그를 볼 수 없습니다. '02-06 20 : 32 : 56.996 : ERROR/DDD (15179) : TODO의 크기 = 106 02-06 20 : 32 : 59.090 : 오류/DDD (15179) : 새로운 크기의 TODO = 106 ' – jason

+0

다음과 같이 LogCat보기 탭을 추가하고 사용해야합니다 : Window | 보기보기 | 기타 ... | LogCat. 이것은 정확하게 삽입에 잘못이 무엇인지에 대한 로그를 포함해야합니다. –

답변

0

나는 멍청이이다. @ Rob이 내 작성 테이블을보고 제안하면, 나는 틀린 컬럼 이름을 언급하고 있었다. 이와 같은 업데이트 성명서가 자동으로 실패 할 수는 없다는 사실이 나에게는 전혀 발생하지 않았습니다! 고마워요 @ 로브

1

: 3 행과 4 행은 ContentValues ​​세트에 문자열을 삽입하지 않고 대신 원시 객체를 삽입합니다. 나중에 일부 유형 변환이 실패합니다. 매개 변수에서 toString()을 호출하십시오.

두 번째 발췌에서 암시 적으로 변환을 문자열로 강제 설정합니다.

+0

글쎄, 나는'String date = "";'와'for (String toDo : toDoArray)'를 정의하고 있으므로 반드시 문자열로 다시 채울 필요가 없다. – jason

+0

은'date' SqLite의 예약어입니까? 어쩌면 문제를 일으키는거야? – jason

+0

그럴 경우, 아니, 맞아. 당신은 당신의 창조 SQL을 게시 할 수 있습니까? 예 : CREATE TABLE ... 날짜가 예약되어 있으면 권한에 따라 작성이 실패한 것이므로 두 번째 발췌도 실패합니다. –

관련 문제