2012-08-21 5 views
0

Android 시스템에서 SQLite 데이터 집합을 처리해야합니다.Android에서 SQLite 데이터 집합을 처리하는 방법

내 dataBaseHelper 파일 (DataBaseAccessor)에 다음과 같은 코드가 있습니다 (목록보기에 첨부 된 경우 관련 데이터가 표시됨).

public static ArrayList<QuestionListQuestion> getQuestionListQuestions(long id){ 
String qry = "select QuestionListQuestionID, QuestionListQuestionQuestionListID, QuestionListQuestionQuestionID, QuestionListQuestionSortOrder, QuestionListQuestionSupplementalQuestionIDYes, QuestionListQuestionSupplementalQuestionIDNo, QuestionListQuestionSupplementalQuestionIDText, QuestionListQuestionSurveyGroupID from QuestionListQuestion where QuestionListQuestionQuestionListID=" + id; 
ArrayList<QuestionListQuestion> list = new ArrayList<QuestionListQuestion>(); 
try{ 
    Cursor cursor = wdb.rawQuery(qry, null); 
while (cursor.moveToNext()) { 
QuestionListQuestion questionlistquestion = new QuestionListQuestion(); 
    questionlistquestion.QuestionListQuestionID = cursor.getLong(0); 
    questionlistquestion.QuestionListQuestionQuestionListID = cursor.getLong(1); 
    questionlistquestion.QuestionListQuestionQuestionID = cursor.getLong(2); 
    questionlistquestion.QuestionListQuestionSortOrder = cursor.getLong(3); 
questionlistquestion.QuestionListQuestionSupplementalQuestionIDYes = cursor.getString(4);  questionlistquestion.QuestionListQuestionSupplementalQuestionIDNo = cursor.getString(5); 
questionlistquestion.QuestionListQuestionSupplementalQuestionIDText = cursor.getString(6); 
questionlistquestion.QuestionListQuestionSurveyGroupID = cursor.getLong(7); 
list.add(questionlistquestion); 
} 
    cursor.close(); 
} 
catch (Exception e) { 
    e.printStackTrace(); 
} 
return list; 
} 

이제 데이터를 처리하고 반환 된 원래 목록을 기반으로 다른 테이블에 새 레코드를 만들 수 있도록 시스템을 확장해야합니다.

list.get(0) = [email protected] 
list.get(1) = [email protected] 
etc... 

어떻게 얻을 수 액세스 -이 :

QuestionListID = (String) SiteGenerateQuestions.this.spnQuestL.getSelectedItem().toString(); 
long SpinnerSelectedBT; 
SpinnerSelectedBT = GenerateQuestions.this.spnQuestL.getSelectedItemId(); 
list = DatabaseAccessor.getQuestionListQuestions(SpinnerSelectedBT); 
for (int i=0; i < list.size(); i++){ 
Toast.makeText(SiteGenerateQuestions.this," list.get(" + i + ") = " + list.get(i) + " " , Toast.LENGTH_SHORT).show(); 
} 

토스트는 다음을 표시합니다 : -

은 내가 (스피너에서 관련 목록 ID를 선택) 버튼에 부착 된 다음 시도 대신에 실제 데이터에 ... .entity.QuestionListQuestion @ 407bc170 또는 완전히 오프 트랙입니까? 당신이 당신의 QuestionListQuestion 클래스의 toString() 방법을 구현하지 않았기 때문에 당신이보고있는 출력은

많은 감사

답변

0

나는 @wsanville에 동의하면 get() 메서드는 목록의 해당 위치에있는 객체를 반환합니다. 토스트, 로그, System.out.println 등의 객체를 인쇄하면 출력물에 toString() 값이 사용됩니다. 기본값 toString()은 패키지 이름과 @ 다음에 해당 객체의 16 진수 표현이옵니다. 수업은 toString() 메서드를 재정의해야하므로 get()을 사용하면 toString() 메서드에 입력 한 내용이 인쇄됩니다.

+0

나는 여기서 어디로 가야할지에 대한 아이디어를 얻은 http://www.javabeat.net/2007/08/overriding-the-tostring-method-in-object-class/을보고있다. 다른 제안이 있으면 감사드립니다. – user1459083

+0

내가 이해한다면 목록에있는 개체에 대한 액세스 권한을 원합니다. 오브젝트에 액세스하여 오브젝트를 조작하려면 해당 오브젝트에 대한 참조가 필요합니다. 'ObjectInList itemFromList = list.get (indexNumber)'는'indexNumber'에있는 객체에 대한 참조를 제공합니다. 그런 다음'itemsFromList'를 사용하여 해당 객체의 메소드를 호출 할 수 있습니다. –

+0

예, 목록 개체의 데이터에 액세스하려고합니다. QuestionListQuestionQuestionID, QuestionListQuestionSortOrder 및 QuestionListQuestionSupplementalQuestionIDYes를 가져와 다른 테이블에서 새 레코드를 작성해야합니다.GenerateQuestions.Java에서 단추를 실행하려면 코드가 필요하지만 DatabaseAccessor.Java에서 쿼리를 호출합니다. 내게는 그 일을하는 방법을 알 수 없습니다. – user1459083

0

. 그 외에는 찾고있는 데이터가있는 것처럼 보입니다. 객체 자체를 연결하는 대신 객체의 ID를 출력 해보십시오 (후드 아래 toString()).

또한 단추가 클릭 될 때 데이터베이스 작업을 수행하는 것처럼 보이므로 UI ​​스레드 외부에서 데이터베이스 작업을 수행해야합니다. 높은 수준의 개요를 보려면 docs을 확인하십시오. 문제의 데이터베이스 작업에 AsyncTask을 사용할 수 있습니다.

+0

빠른 답변 감사드립니다. toString() 메서드를 어디에 추가해야하는지 알려 줄 수 있습니까? – user1459083

+0

및 개체 ID를 어떻게 출력합니까? – user1459083

+0

당신은'QuestionListQuestion' 클래스에서 그 메소드를 오버라이드 할 수 있습니다. 여러분은'QuestionListQuestionID' 멤버 변수에 ID를 저장하는 것처럼 보입니다. – wsanville

관련 문제