2012-01-14 2 views
0

내 코드에서 어떤 일이 일어나고 있는지 확실하지 않습니다. 이것은 안드로이드로 SQLite에서 코딩을 시도한 첫 번째 시도이며 ContentValues를 사용하여 데이터베이스에 레코드를 입력합니다. 나는 아무 오류나 아무것도 얻지 않으며 자료는 제대로 삽입된다, 그러나 나는 데이타베이스에서 그들을 당길 때 각 기록을위한 5 개의 ListView 입장을 얻고있다. ContentValues ​​및 .insert를 사용하여 데이터를 데이터베이스에 배치 할 때 데이터 입력 방법을 잘못 이해했거나 데이터베이스에서 데이터를 검색 할 때 잘못된 결과를 나타냅니다.SQLite에서 동일한 레코드에 대한 여러 항목을 반환하는 ListView

다음은 데이터를 데이터베이스에 삽입하는 데 사용하는 코드입니다.

DatabaseHelper helper = new DatabaseHelper(this); 
    database = helper.getWritableDatabase(); 

    ContentValues cv=new ContentValues(); 

    cv.put(myName, titleText); 
    cv.put(myFileName, filenameText); 
    cv.put(myRecDate, recordedText); 
    cv.put(myPubDate, publishedText); 
    cv.put(myDescription, DescriptionText); 

    database.insert(myTable, castName, cv); 
    database.insert(myTable, castFileName, cv); 
    database.insert(myTable, castRecDate, cv); 
    database.insert(myTable, castPubDate, cv); 
    database.insert(myTable, castDescription, cv); 

    database.close(); 

다음은 내 ListView를 채우기위한 코드입니다.

DatabaseHelper helper = new DatabaseHelper(this); 
    database = helper.getWritableDatabase(); 
    Cursor data = database.query("myDb", fields, null, null, null, null, null); 
    dataSource = new SimpleCursorAdapter(this, R.layout.row, data, fields, new int[] {R.id.idText, R.id.name, R.id.description}); 

    final ListView view = getListView(); 

    view.setHeaderDividersEnabled(true); 
    view.addHeaderView(getLayoutInflater().inflate(R.layout.row, null)); 
    setListAdapter(dataSource); 

    database.close(); 

데이터가 성공적으로 삽입되었으므로 DatabaseHelper 클래스에 문제가 있다고 생각하지 않습니다. 어떤 조언을 크게 주시면 감사하겠습니다.

답변

1

ContentValues는 단일 레코드를 나타냅니다. 그래서 당신은 당신이 당신의 객체로부터 레코드를 생성하는이 부분을 가지고 있습니다. 이것은 열 이름과 열 값의 매핑이어야합니다.

cv.put(myName, titleText); 
cv.put(myFileName, filenameText); 
cv.put(myRecDate, recordedText); 
cv.put(myPubDate, publishedText); 
cv.put(myDescription, DescriptionText); 

그리고 여기에서 동일한 레코드를 5 번 삽입합니다. 여기서 두 번째 매개 변수가 열 이름이라고 가정합니다. , myTable에이 경우, 두 번째 매개 변수는 null해야 안드로이드에서

database.insert(myTable, castName, cv); 
database.insert(myTable, castFileName, cv); 
database.insert(myTable, castRecDate, cv); 
database.insert(myTable, castPubDate, cv); 
database.insert(myTable, castDescription, cv); 

, 당신은 테이블 이름을 지정해야하고, 마지막 매개 변수는 ContentValues ​​객체이어야한다.

그래서 올바른 방법이 될 것이라고해야 할 일 : 각 열의 삽입()를 호출하는 것처럼

ContentValues cv = new ContentValues(); 
cv.put(nameColumn, nameValue); 
cv.put(fileNameColumn, fileNameValue); 
... etc ... 

database.insert(tableName, null, cv); 
+0

ohhhhhh ... 확인. 감사 :) – Carnivoris

1

보인다. 열 이름을 ID와 함께 ContentValues ​​객체에 넣습니다. 그런 다음

database.insert(myTable, null, cv); 

으로 한 번만 전화하십시오.

관련 문제