首页 文章

如何在Android中处理SQLite数据集

提问于
浏览
0

我需要在Android系统中处理SQLite数据集 .

在我的dataBaseHelper文件(DataBaseAccessor)中,我有以下代码(当附加到listview时显示相关数据) .

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;
}

我现在需要扩展系统,以便我可以根据返回的原始列表处理数据并在另一个表中创建新记录 .

我尝试了以下附加按钮(从微调器中选择相关的列表ID): -

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();
}

Toast显示以下内容: -

list.get(0) =  com.tw.question.entity.QuestionListQuestion@407a6F70
list.get(1) =  com.tw.question.entity.QuestionListQuestion@407bc170
etc...

如何才能访问实际数据而不是... .entity.QuestionListQuestion @ 407bc170或者我完全偏离轨道?

非常感谢

2 回答

  • 0

    我同意@wsanville的 get() 方法将返回列表中该位置的对象 . 当您打印出一个对象(在toast,log,System.out.println等中)时,它将使用打印输出中的 toString() 值 . 默认的 toString() 是包名后跟@,后跟该对象的十六进制表示 . 您的类将需要覆盖 toString() 方法,因此当您使用 get() 时,它将打印出您在 toString() 方法中放置的任何内容 .

  • 0

    您're seeing is because you haven' t的输出实现了 QuestionListQuestion 类的 toString() 方法 . 除此之外,您似乎确实拥有了所需的数据 . 只是尝试输出对象的ID,而不是连接对象本身(将在引擎盖下调用 toString() ) .

    此外,由于看起来您在单击按钮时正在执行数据库操作,因此请确保在UI线程外执行数据库操作 . 查看docs以获得高级概述 . 您可能希望使用 AsyncTask 来处理有问题的数据库操作 .

相关问题