2011-02-15 6 views
1

모든 항목을 검사했는데 응용 프로그램을 강제 종료하도록 데이터를 추가하려고하면 데이터베이스를 만드는 것이 좋습니다. 나는 이유를 알 수 없다.SQLITE 쿼리 강제 종료 응용 프로그램 닫기

db.execSQL("CREATE TABLE IF NOT EXISTS " + 
      SAMPLE_TABLE_NAME2  
      + " (GenID INT, " 
      + " Nxtq INT);"); 

    db.execSQL("INSERT INTO " + 
      SAMPLE_TABLE_NAME2 + 
      " Values (1,1);"); 

I 출력은 일반적으로 값이 (1,1)

삽입 반 'prepearing 때

실패 1 (표 일반 4 열이지만 2 개 값이 공급 된)이다 얻을 에러

두 가지 쿼리가 모두 나오기 전에 몇 가지 내용이 있습니다.

db = this.openOrCreateDatabase(SAMPLE_DB_NAME, MODE_PRIVATE, null); 

    db.execSQL("CREATE TABLE IF NOT EXISTS " + 
      SAMPLE_TABLE_NAME + 
      " (ID INT(3), Questions VARCHAR, Answer1 VARCHAR," + 
      " Answer2 VARCHAR, Answer3 VARCHAR," + 
      " Answer4 VARCHAR, CorrectAnswer INT(1), Reason VARCHAR);"); 

    db.execSQL("CREATE TABLE IF NOT EXISTS " + 
      SAMPLE_TABLE_NAME2  
      + " (GenID INT, " 
      + " Nxtq INT);"); 

    db.execSQL("INSERT INTO " + 
      SAMPLE_TABLE_NAME2 + 
      " Values (1,1);"); 
+0

다음 중 어떤 문구가 실패합니까? 디버그 문을 추가하여 정확히 파악할 수 있습니까? –

+0

스택 추적을 게시 할 수 있습니까? – Damp

+0

@ p.campbell @Damp 열의 수와 관련이 있습니다. 오류는 실패 1을 읽습니다 (테이블 일반은 4 개의 열을 가졌지 만 2 개의 값이 제공되었습니다) – Somk

답변

2

시도는, 다른 "general_new"하고 스크립트가 작동하는지처럼 뭔가 "일반"의 이름을 변경, 일반 테이블이 이미있을 수 있습니다 (심지어 너 자신을 만들었다 고 생각하지 않는다면).

0

사용 adb logcat는 DDMS는, 또는 이클립스의 DDMS 관점 로그 캣을 조사하고 예외와 관련된 스택 추적을 볼 수 있습니다. 여기에 글을 게시하기 전에 그렇게하고 LogCat 출력을 이해하지 못하면 LogCat 출력 관련 비트를 포함 시키십시오.

이 경우 INT(3)a valid SQLite datatype이 아닌 것으로 보이지만 이는 단지 추측에 지나지 않습니다.

+0

Eclipse를 사용하여 필요한 정보를 검토 할 때 유용한 자습서 또는 기타 정보를 제공 할 수 있습니까? 장기적으로 볼 때 더 유용 할 수 있습니다. – Somk

+0

@Max : Dev.android.com 웹 사이트의 Dev Guide 탭에는 이러한 도구에 대한 설명서가 있습니다. 공개 Eclipse 및 Android 관련 자습서에 대한 준비 링크가 없지만 Google 검색을 통해 일부를 찾을 수 있다고 생각합니다. 물론 안드로이드 개발에 관한 많은 책들이 있습니다. 그 중 많은 것들이 제가 작성한 도구들 중 일부를 사용합니다 : :-) – CommonsWare

+0

열의 수와 관련이 있습니다. 오류는 이라고 읽습니다. 오류 1 (테이블 일반은 4 개의 열이 있지만 2 개의 값이 제공됨) – Somk

0

@Max 인서트 용 db.insert (........);

+0

왜 이것을 사용해야합니까? 그 차이점은 무엇입니까? 현재 모든 인서트 쿼리는 동일한 방식으로 실행되며 정상적으로 작동합니다. – Somk

0

위의 코드를 실행하기 전에 general이라는 테이블이 이미 있습니다. 이 기존 테이블에는 4 개의 열이 있으므로 두 열이있는 INSERT INTO이 실패합니다. IF NOT EXISTS이 false이므로 CREATE TABLE은 아무 작업도 수행하지 않습니다.

데이터베이스가 올바르게 작성되었다고 말하면 - 응용 프로그램이 빈 데이터베이스로 시작합니까 아니면 기존 데이터베이스를 다시 사용할 수 있습니까? 또는 이전에 호출 된 코드 중 일부가 4 열 구조의 general이라는 테이블을 만드는 코드가있을 수 있습니다. 위와 충돌합니다.

+0

스크립트의 전체 데이터베이스 부분은 friend라고하는 다른 테이블을 만드는 추가 부분으로 게시 한 것입니다. 그 테이블은 잘 실행되었고 아무 문제없이 데이터를 삽입하고 검색 할 수 있습니다. 이제는 PHP에서와 같이 두 번째 테이블을 만들려고했습니다. 위의 내용을 – Somk

+2

위에 추가했습니다. "general_new"와 같은 다른 이름으로 변경하고 스크립트가 작동하는지 확인하십시오. 일반적으로 테이블이 이미 존재할 수도 있습니다 (직접 작성했다고 생각하지 않더라도). . – Seph

+0

@Max - openOrCreateDatabase를 직접 사용하고 있습니다. 잘 모르겠습니다. http://developer.android.com/guide/topics/data/data-storage.html#db –

0

SAMPLE_TABLE_NAMESAMPLE_TABLE_NAME2의 값은 각각 무엇입니까? 그들이과 같이 동일하다고 가능 : 언급 한 바와 같이

private static final String SAMPLE_TABLE_NAME = "general"; 
private static final String SAMPLE_TABLE_NAME2 = "general";