آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

واکشی اطلاعات از دیتابیس

bustanchi  12 سال پیش  12 سال پیش
0 0

من توی برنامم وقتی یک کوئری به دیتابیس میزنم که title و text اون رو برام بخونه از دیتابیس بیاره , چون text اون توی دیتابیس حجم سنگینی از متن رو میخواد وارد برنامه بکنه و من اون رو توی یه متغیر از نوع String میریزم موقع وارد شدن به اون اکتیویتی برنامه کرش میکنه .

باید چیکار کنم که این اتفاق نیافته و بخوبی اطلاعات رو بیاره و کرش نکنه ؟

آیا باید از Theread ها استفاده کرد ؟

0 0
علت این نیست ! ، سورس کد کامل اکتیویتی رو بزارید + لاگ کرش (12 سال پیش)
0 0
از thread ها که استفاده بکن ولی همونطور که دوستمون اشاره کرد احتمالش کمه دلیلش این باشه! تست کن ببین وقتی حجم مطالبم داخل اون فیلد کم میکنی بازم کرش میکنه؟(اگه کرد که همون مواردی که دوستمون گفت رو بذار) (12 سال پیش)
0 0
اگر خواندن مثلا صد هزار بایت ممکن نبود ، دیتابیس هرگز اجازه ذخیره ی این حجم رو نمیداد ، مثلا ما میبینیم موقع وارد کردن اطلاعات ، با خطای overflow به معنی سر ریزی و پر حجم بودن داده ی واریزی رو به رو میشیم ! (12 سال پیش)
 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
bustanchi  12 سال پیش
0 0

لاگ کرش میگه که نمیتونم مقدار 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();
}
0 0
کد شما از نظر من هیچ مشکلی نداره ، البته من به لیست ویو ها مسلط نیستم ، اما شما لاگ هم بزار که ببنیم خطا تو چه خطی و چه نوعی هست ، ترجمش رو نخواستیم که آخه ، ضمنا شما که فیلد Blob ندارید ، فقط subject و text توی سورس اتفاده شده ! (12 سال پیش)
پاسخ به سوال 
bustanchi  12 سال پیش
0 0

متن ارور این هست :

 Unable to convert Blob to String

و دقیقا داره از خطی که توش متغیر text از نوع string تعریف شده هست خطا میگیره !!

0 0
Spirit جوون اینجوری که شما میگی باهاش درگیری لفظی هم داشتی ! ، داداش این شد راه حل ؟ ، خدایی 2 دقیقه خندیدم همون از نو ساختن دیتابیس منتطقی تره آخه خوب (12 سال پیش)
پاسخ به سوال 
مجتبی یگانه  12 سال پیش
0 0

داده ای که به متغییر String واریز میکنید ، string نیست . از toString استفاده کنید 

  String text = cursor.getString(cursor.getColumnIndex("text")).toString();
0 0
بازهم همون Error رو میده و مشکل حل نمیشه !!! (12 سال پیش)
پاسخ به سوال 
bustanchi  12 سال پیش
0 0

متن دیتابیس رو کم که میکنم جواب میده ولی درحالتی که مقداری متن داخلش هست برنامه کرش میکنه .!!!

0 0
از همه دوستان ممنونم مشکلم حل شد ؛ مشکل همونی بود که sprint عزیز گفت که من بعنوان حسن ختام این بخش نظرشو میزارم که بچه ها استفاده کنند : دوست عزیز ، منم قبلا یه این مشکل برخوردم ، تو دیتابیسم هیچ فیلدی با متغیر boolean نداشتم و این خطا کلافم کرده بود ، و این طوری حلش کردم : چند باری از دیتابیس خروجی ها مختلف گرفتم (xml , txt , ...) و از نو دیتابیس رو ساختم تا بالاخره کوتاه اومد. (12 سال پیش)
0 0
منظور از دیتابیس خروجی ها گرفتم دقیقا چیه؟ منظور با همون SQLite manager خروجی گرفتی؟! (12 سال پیش)
0 0
من یه بار دیگه دیتابیس رو از نو ساختم با SQLite Manager و مشکل حل شد . قبل از اون با نرم افزار Navicat for SQLite کار میکردم که این مشکل رو بوجود آورد . (12 سال پیش)
0 0
آها ممنون (12 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .