واکشی اطلاعات از دیتابیس
من توی برنامم وقتی یک کوئری به دیتابیس میزنم که title و text اون رو برام بخونه از دیتابیس بیاره , چون text اون توی دیتابیس حجم سنگینی از متن رو میخواد وارد برنامه بکنه و من اون رو توی یه متغیر از نوع String میریزم موقع وارد شدن به اون اکتیویتی برنامه کرش میکنه .
باید چیکار کنم که این اتفاق نیافته و بخوبی اطلاعات رو بیاره و کرش نکنه ؟
آیا باید از Theread ها استفاده کرد ؟
لاگ کرش میگه که نمیتونم مقدار Blob رو به string تبدیل کنم درصورتی که من نوع اون خونه رو توی دیتابیس از نوع text انتخاب کردم ....
public ArrayAdapter adapter;
@Override
protected void onResume() {
G.currentActivity = this;
super.onResume();
if (adapter != null) {
adapter.notifyDataSetChanged();
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.l);
ListView lstContent = (ListView) findViewById(R.id.lstContent);
adapter = new AdapterNote(G.notes);
lstContent.setAdapter(adapter);
Cursor cursor = G.database.rawQuery("SELECT * FROM table1", null);
G.notes.clear();
while (cursor.moveToNext()) {
String subject = cursor.getString(cursor.getColumnIndex("subject"));
String text = cursor.getString(cursor.getColumnIndex("text"));
StructNote note = new StructNote();
note.title = subject;
note.txt = text;
G.notes.add(note);
}
cursor.close();
adapter.notifyDataSetChanged();
}
متن ارور این هست :
Unable to convert Blob to String
و دقیقا داره از خطی که توش متغیر text از نوع string تعریف شده هست خطا میگیره !!
داده ای که به متغییر String واریز میکنید ، string نیست . از toString استفاده کنید
String text = cursor.getString(cursor.getColumnIndex("text")).toString();
متن دیتابیس رو کم که میکنم جواب میده ولی درحالتی که مقداری متن داخلش هست برنامه کرش میکنه .!!!
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .