2014-04-23 3 views
0

DB에 문자열을 입력하면 검색 할 수 있습니다. 제가 DB를 열고을 다시 DB에 다른 문자열을 배치하고 폐쇄한다면, 항목은 내가 데이터를 검색 내 DB 클래스를 호출 할 때 다음, 문자열이 돌아 오면 ...SQLite DB에 다중 입력

  entry.open(); 
      entry.putChampion1IntoDb(jsonString); 
      entry.close(); 



      entry.open(); 
      entry.putChampion2IntoDb(jsonString2); 
      entry.close(); 

    public long putChampion1IntoDb(String json) { 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_CHAMPION_1, json); 

     return mDatabase.insert(DATABASE_TABLE, null, cv); 
    } 

    public long putChampion2IntoDb(String json) { 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_CHAMPION_2, json); 

     return mDatabase.insert(DATABASE_TABLE, null, cv); 
} 

존재하지 않습니다 null

public JSONObject getChampions2() throws JSONException { 
     Cursor c = mDatabase.query(DATABASE_TABLE, mColumns, null, null, null, null, null); 
     c.moveToFirst(); 
     String jsonFeed = c.getString(c.getColumnIndex(KEY_CHAMPION_2)); 
     JSONObject json = new JSONObject(jsonFeed); 
     return json; 
} 

아마도 나는 c.moveToFirst();와 DB를 잘못 탐색 할 것입니다.

약 5 개의 열과 1 개의 행만 있습니다. Champion1 | | Champion2 | Champion3 | Champion4 | Champion5 |


(내 머리에 적어도 나는 이런 식으로 사진)

처음으로 .open() 및 .putChampionIntoDB (string)과 관련된 키는 첫 번째 열입니다. 커서가 행과 연관되어 있습니까? 그래서, c.moveToFirst()는 내 모든 정보가 저장된 첫 번째 행으로 이동합니다. 맞습니까?

미리 감사드립니다.

답변

2

나는 데이터베이스가 어떻게 작동하는지 이해하지 못한다고 생각합니다. 삽입을 호출 할 때마다 새 행을 삽입합니다. 실제로 그와 같은 데이터를 가지고 있습니다 : | Champion1 | Champion2 | Champion3 | Champion4 | Champion5 |

| somedata | null | null | null |

| null | somedata | null | null | null |

등등. 그래서 첫 번째 행을 가져 와서 KYY_CHAMPION2를 (를) 얻으려고하면 null입니다.

나는 정말로 테이블을 만들 필요가 있다고 생각한다.

| _id | champion |

데이터의 각 부분을 별도의 행에 저장하십시오. 그러면 쉽게 반복 할 수 있습니다.

데이터를 한 행에 저장하려면 db.insert() 대신 처음으로 db.update()를 호출해야합니다. 그러나 업데이트를 호출 할 때 업데이트 할 행을 식별해야합니다. 기본 키로 일부 열이 없으면 문제가 될 수 있습니다.

+0

고마워요! 말이된다. so, | _id | champion_key_1 | | _id | champion_key_2 | .... 등등 ... 이 댓글에 행을 넣기가 어렵습니다. – DDukesterman

+0

고마워요! 작동하도록했습니다. – DDukesterman