从Android中的SQLite数据库读取Blob(图像)时出错

时间:2016-12-11 04:16:16

标签: java android sqlite android-sqlite blob

我正在开发基于MCQ的安卓搜索者的Android应用程序。我正在使用SQLite数据库浏览器在app中填充我的数据。一切都很顺利。但是当我试图从sqlite中检索blob(图像)时它正在投掷错误。

以下是我正在尝试的一些代码 - (MainActivity.java)

public List<itemList> getItemList() {
    c = myDbHelper.query("EMP_TABLE", null, null, null, null, null, null);
    List<itemList> finalitemlist = new ArrayList<itemList>();
    itemList itemList;

        if (c.moveToFirst()) {
            do {

                itemList = new itemList(c.getString(1), c.getString(2), c.getString(3), c.getString(4),c.getString(5),c.getString(6),c.getString(7),c.getString(8),c.getBlob(9));
                finalitemlist.add(itemList);

            } while (c.moveToNext());
        }
    return finalitemlist;
}

itemList.java

public class itemList {
String questionName;
String option_1;
String option_2;
String option_3;
String option_4;
String ans;
String explanation;
byte[] byteArray;
public itemList(String questionName, String option_1, String option_2, String option_3, String option_4, String ans, String explanation,String ext,byte[] bytes) {
    this.questionName = questionName;
    this.option_1 = option_1;
    this.option_2 = option_2;
    this.option_3 = option_3;
    this.option_4 = option_4;
    this.ans = ans;
    this.explanation = explanation;
    this.extra=ext;
    this.byteArray=bytes;

}

public byte[] getByteArray() {
    return byteArray;
}

public void setByteArray(byte[] byteArray) {
    this.byteArray = byteArray;
}



public String getExtra() {
    return extra;
}

public void setExtra(String extra) {
    this.extra = extra;
}

String extra;

public String getQuestionName() {
    return questionName;
}

public void setQuestionName(String questionName) {
    this.questionName = questionName;
}

public String getOption_1() {
    return option_1;
}

public void setOption_1(String option_1) {
    this.option_1 = option_1;
}

public String getOption_2() {
    return option_2;
}

public void setOption_2(String option_2) {
    this.option_2 = option_2;
}

public String getOption_3() {
    return option_3;
}

public void setOption_3(String option_3) {
    this.option_3 = option_3;
}

public String getOption_4() {
    return option_4;
}

public void setOption_4(String option_4) {
    this.option_4 = option_4;
}

public String getAns() {
    return ans;
}

public void setAns(String ans) {
    this.ans = ans;
}

public String getExplanation() {
    return explanation;
}

public void setExplanation(String explanation) {
    this.explanation = explanation;
}

}

GetView方法来自适配器类 只有一个imageView。我将byte []数组转换为位图并设置为此imageView。

public View getView(int i, View view, ViewGroup viewGroup) {
    View v=View.inflate(mContext,R.layout.question_sample_item,null);
    TextView questionName= (TextView) v.findViewById(R.id.question_name);
    TextView op1= (TextView) v.findViewById(R.id.opt1);
    TextView op2= (TextView) v.findViewById(R.id.opt2);
    TextView op3= (TextView) v.findViewById(R.id.opt3);
    TextView op4= (TextView) v.findViewById(R.id.opt4);
    TextView ans= (TextView) v.findViewById(R.id.ans);
    TextView ext= (TextView) v.findViewById(R.id.ext);
    TextView explanation= (TextView) v.findViewById(R.id.explanation);
    ImageView qImage= (ImageView) v.findViewById(R.id.blobimage);
    questionName.setText(itemLists.get(i).getQuestionName());
    op1.setText("ক. "+itemLists.get(i).getOption_1());
    op2.setText("খ. "+itemLists.get(i).getOption_2());
    op3.setText("গ. "+itemLists.get(i).getOption_3());
    op4.setText("ঘ. "+itemLists.get(i).getOption_4());
    ans.setText("  "+itemLists.get(i).getAns()+"  ");
    explanation.setText(itemLists.get(i).getExplanation());
    try {
        if (itemLists.get(i).getExtra()!=null){
            ext.setText(itemLists.get(i).getExtra());
        }
        else {
            ext.setVisibility(View.GONE);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    try {
        if (itemLists.get(i).getByteArray()!=null){
            Bitmap bitmap= BitmapFactory.decodeByteArray(itemLists.get(i).getByteArray(),0,itemLists.get(i).getByteArray().length);
        qImage.setImageBitmap(bitmap);
        }
        else {
            qImage.setVisibility(View.GONE);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return v;
}

**最后我得到的错误快照** Screenshot of Error that taken from Logcat

请帮助我。谢谢。如果需要任何其他信息,请通知我。

0 个答案:

没有答案