2012-12-14 2 views
1


다음 코드를 사용하여 여러 레코드를 테이블에 삽입 할 때마다 마지막으로 초기화 된 값만 삽입됩니다.

여기 테이블에 데이터를 삽입하는 방법입니다 : 열 키에 대한이 경우ContentValues를 사용하여 Sqlite 데이터베이스의 두 열에 여러 레코드 삽입하기

public long insertQuote() { 
     ContentValues initialValues = new ContentValues(); 
     initialValues.put(KEY_PHID, 100); 
     initialValues.put(KEY_LAT, 28.5700); 
     initialValues.put(KEY_LAT, 28.4700); 
     initialValues.put(KEY_LAT, 27.1833); 
     initialValues.put(KEY_LAT, 26.4583); 

     initialValues.put(KEY_LON, 77.3200); 
     initialValues.put(KEY_LON, 77.0300); 
     initialValues.put(KEY_LON, 78.0167); 
     initialValues.put(KEY_LON, 80.3173); 

     return db.insert(DATABASE_TABLE, null, initialValues); 
    } 

"KEY_LAT는"나는 (Sys.out SOP의 마지막 초기화 값 "26.4583"를 참조 할 만 수 있어요 .println) logcat에 출력.

다른 열 키 "KEY_LON"도 마찬가지입니다. 이 두 기록 만 볼 수 있습니다.

put() 메서드는 이전에 "to-be-inserted" 값을 건너 뛰고 특정 열의 마지막 값을 허용하므로 테이블에 삽입되지 않았다고 가정합니다.

도움을 주시면 감사하겠습니다. 감사.

답변

4

모두에게 동일한 LAT 및 LON 키를 사용하기 때문에 이러한 현상이 발생합니다. 그것은 덮어 쓰여지고 있습니다.

당신은

public long insertQuote() { 
     ContentValues initialValues = new ContentValues(); 
     initialValues.put(KEY_PHID, 100); 
     initialValues.put(KEY_LAT1, 28.5700); 
     initialValues.put(KEY_LAT2, 28.4700); 
     initialValues.put(KEY_LAT3, 27.1833); 
     initialValues.put(KEY_LAT4, 26.4583); 

     initialValues.put(KEY_LON1, 77.3200); 
     initialValues.put(KEY_LON2, 77.0300); 
     initialValues.put(KEY_LON3, 78.0167); 
     initialValues.put(KEY_LON4, 80.3173); 

     return db.insert(DATABASE_TABLE, null, initialValues); 
    } 

편집으로 서로 다른 키를 사용한다 :

그래서이 방법을 사용해야합니다.

public long insertQuote() { 
      ContentValues initialValues = new ContentValues(); 
      initialValues.put(KEY_PHID, 100); 
      initialValues.put(KEY_LAT, 28.5700); 
      initialValues.put(KEY_LON, 77.3200); 
      db.insert(DATABASE_TABLE, null, initialValues); 
      initialValues.put(KEY_LAT, 28.4700); 
      initialValues.put(KEY_LON, 77.0300); 
      db.insert(DATABASE_TABLE, null, initialValues); 
      initialValues.put(KEY_LAT, 27.1833); 
      initialValues.put(KEY_LON, 78.0167); 
      db.insert(DATABASE_TABLE, null, initialValues); 
      initialValues.put(KEY_LAT, 26.4583); 
      initialValues.put(KEY_LON, 80.3173); 
      return db.insert(DATABASE_TABLE, null, initialValues); 
     } 
+0

다른 "KEY_LAT1, ..KEY_LAT3 .."을 사용하면 다른 열 이름을 의미합니다. KEY_LAT와 KEY_LON은 다음과 같이 선언되기 때문에 :'public String KEY_LAT = "LATS"; \t public String KEY_LON = "LONS";'여기서 LATS 및 LONS는 단일 테이블의 두 개의 다른 열 필드입니다. KEY_LAT1 = "LATS"및 KEY_LAT2 = "LATS"등을 선언해야한다고 말하는 것입니까? – beerBear

+0

확인. 이걸 다른 행에 넣고 싶지, 그렇지? –

+0

내 테이블 구조는 다음과 같습니다.'phID (of type integer) | LATS (유형의 진짜) | LONS (유형 실수)'모든 KEY_LAT 값이 LATS라는 단일 열에 있고 모든 KEY_LON 값이 LONS – beerBear

관련 문제