2014-01-08 2 views
2

이 오류에 관해 많은 질문이 있지만 Logcat에서 모든 입력란이 올바르게 채워지는 것처럼 보이지만 오류가 발생하는 이유를 이해할 수 없습니다. 여기 Android-SQLiteConstraintException 오류 코드 19 : 제약 조건이 실패했습니다.

테이블의 창조입니다 : 내가 저장하려고 경우

다음
public void onCreate(SQLiteDatabase db) { 
     String ddl = "CREATE TABLE Politician (id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE , idpolitician INTEGER NOT NULL, name TEXT NOT NULL, picture TEXT , position TEXT NOT NULL, country TEXT NOT NULL, state TEXT NOT NULL, city TEXT NOT NULL);"; 

     db.execSQL(ddl); 

    } 

입니다. 모든 필드가 채워 볼 수 있듯이

01-08 04:03:31.149 32633-32633/? E/Database﹕ [SQLiteDatabase.java:1428:insert()] Error inserting 

state=SP position=governador picture=example idpolitician=1 city=Sao Paulo country=Brasil name=Alckmin 

    android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed 
      at android.database.sqlite.SQLiteStatement.native_execute(Native Method) 
      at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61) 
      at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1582) 
      at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1426) 
      at com.politify.dao.DbManegament.savePolitician(DbManegament.java:44) 

: 여기

public void savePolitician(Politician politician) { 

     ContentValues values = new ContentValues(); 
     values.put("idpolitician", politician.getId()); 
     values.put("name", politician.getName()); 
     values.put("picture", politician.getPictureFilename()); 
     values.put("position", politician.getPosition()); 
     values.put("country", politician.getCountry()); 
     values.put("state", politician.getState()); 
     values.put("city", politician.getCity()); 

     mDatabase.insert("Politician", null, values); 

    } 

그리고

는 로그 캣입니다. 누구든지 도움

+1

중복 값을 입력하고 있습니까? – Raghunandan

+0

제거하고 다시 설치하면 가능한 오래된 데이터베이스가 삭제되고 onCreate()가 다시 호출됩니다. 다른 제약 조건을 가진 이전 버전의 스키마가있는 데이터베이스 파일이 있다고 생각합니다. – laalto

+0

예, 3 가지 항목을 추가하려고했습니다. 그들은 같은 주와 나라를 가지고 있지만, 이념 주의자, 이름과 그림에 대한 다른 가치가 있습니다. 하지만이 오류는 첫 번째 항목에서 가져 왔습니다. 아직 정치인은 없다. –

답변

0

이 당신이 기본 키와 같은 열을 정의 할 때 다음에 필요하지 않은 사용자의 실수 id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE

표 스크립트

+0

나는 그것을 시험해 보았다. 일하지 마라. –

0

을 만들 AUTOINCREMENT UNIQUE 기억 하시죠을 제거하려고 난`잘못하고 무엇을 말할 수있다 UNIQUE로 지정하십시오. Primary Key는 기본적으로 UNIQUE입니다.

+0

이미 시도했습니다 ID INTEGER PRIMARY KEY AUTOINCREMENT 및 id INTEGER PRIMARY KEY. 이 일의 아무 것도. 나는 여전히 같은 오류가 발생합니다. 자습서 코드에서이 정의를 얻었지만 ADT에서는 작동하지만 Android Studio에서는 작동하지 않습니다. –

+0

자습서의 링크를 제공 할 수 있습니까? – Kitkat

+0

개인 코스입니다. 사실 그들은 ID가 INTEGER PRIMARY KEY를 넣으려고했으나이 작업을 수행 할 때 중복 ID에서 오류가 발생했습니다. 그래서 나는 AUTOINCREMENT UNIQUE를 넣고 그것을 작동시켰다. 하지만 당신이 말한 것을 시도했지만 여전히 같은 오류가 있습니다. –