رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

خطا در نشون دادن داده های دیتابیس - لطفا کمک کنید


پست های پیشنهاد شده

سلام دوستان

از دیتابیس SQLite خارجی استفاده کردم که داخل پوشه assets هستش. همه کدها رو درست نوشتم اما وقتی قراره داده های دیتابیس رو داخل لیست ویو نشون بده فورس کلوز میده. مشکل کجاست؟

خطاهای لاک‌اوت

لینک ارسال
به اشتراک گذاری در سایت های دیگر

کد کلی برای ارتباط با دیتابیس خارجی :::::::::::::::

public class Database extends SQLiteOpenHelper {

public final String path = "data/data/نام پکیج شما/databases/";

public final String Name = "نام دیتابیس خارجی تون";

public SQLiteDatabase mydb;

public ContactInfo conf;

private Context mycontext;

public Database(Context context) {

super(context, "نام دیتابیس خارجی تون", null, 1);

mycontext = context;

}

@Override

public void onCreate(SQLiteDatabase arg0) {

// TODO Auto-generated method stub

}

@Override

public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

// TODO Auto-generated method stub

}

public boolean useable() {

boolean checkdb = checkdb();

if (checkdb) {

} else {

this.getReadableDatabase();

try {

copydatabase();

} catch (Exception e) {

}

}

return checkdb;

}

public void open() {

mydb = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READWRITE);

}

public boolean checkdb() {

SQLiteDatabase db = null;

try {

db = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READWRITE);

} catch (Exception e) {

}

return db != null ? true : false;

}

public void copydatabase() throws IOException {

OutputStream myOutput = new FileOutputStream(path + Name);

byte[] buffer = new byte[1024];

int length;

InputStream myInput = mycontext.getAssets().open(Name);

while ((length = myInput.read(buffer)) > 0) {

myOutput.write(buffer, 0, length);

}

myInput.close();

myOutput.flush();

myOutput.close();

}

}

----------------------------------

کد بالا کد های کلی ارتباط با دیتابیسه . ..

از طریق شی گرایی تو اکتیویتی ات یک کلاس از این بساز و این طوری با دیتابیس ارتباط بگیر داخل متد آنکریت ات:

myDb = new Database(this);

myDb.useable();

myDb.open();

در آخر با این کد ببند ارتباطت رو

myDb.close();

----------------------------------

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

در ضمن در مورد اخطار کدت هم احتمالا آدرس رو اشتباه دادی یا نام دیتا بیست رو درست ندادی اگه میشه کد هاتو هم بزار تا راهنمایی کنیم .

یا علی.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

کد کلی برای ارتباط با دیتابیس خارجی :::::::::::::::

public class Database extends SQLiteOpenHelper {

   public final String path = "data/data/نام پکیج شما/databases/";

   public final String Name = "نام دیتابیس خارجی تون";

   public SQLiteDatabase mydb;

   public ContactInfo conf;

   private Context mycontext;

   public Database(Context context) {

       super(context, "نام دیتابیس خارجی تون", null, 1);

       mycontext = context;

   }

   @Override

   public void onCreate(SQLiteDatabase arg0) {

       // TODO Auto-generated method stub

   }

   @Override

   public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

       // TODO Auto-generated method stub

   }

   public boolean useable() {

       boolean checkdb = checkdb();

       if (checkdb) {

       } else {

           this.getReadableDatabase();

           try {

               copydatabase();

           } catch (Exception e) {

           }

       }

       return checkdb;

   }

   public void open() {

       mydb = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READWRITE);

   }

   public boolean checkdb() {

       SQLiteDatabase db = null;

       try {

           db = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READWRITE);

       } catch (Exception e) {

       }

       return db != null ? true : false;

   }

   public void copydatabase() throws IOException {

       OutputStream myOutput = new FileOutputStream(path + Name);

       byte[] buffer = new byte[1024];

       int length;

       InputStream myInput = mycontext.getAssets().open(Name);

       while ((length = myInput.read(buffer)) > 0) {

           myOutput.write(buffer, 0, length);

       }

       myInput.close();

       myOutput.flush();

       myOutput.close();

   }

}

----------------------------------

کد بالا کد های کلی ارتباط با دیتابیسه . ..

از طریق شی گرایی تو اکتیویتی ات یک کلاس از این بساز و این طوری با دیتابیس ارتباط بگیر داخل متد آنکریت ات:

       myDb = new Database(this);

       myDb.useable();

       myDb.open();

در آخر با این کد ببند ارتباطت رو

       myDb.close();

----------------------------------

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

در ضمن در مورد اخطار کدت هم احتمالا آدرس رو اشتباه دادی یا نام دیتا بیست رو درست ندادی اگه میشه کد هاتو هم بزار تا راهنمایی کنیم .

یا علی.

دوست عزیز مشکل منکه این نیست. من کدهای دیتابیس رو همه رو درست نوشتم. یه تابع نوشتم که اطلاعات دیتابیس رو فراخونی میکنه. این تابع رو هم داخل رویداد کلیک دکمه نوشتم حالا وقتی کلیک میکنم برنامه کرش میکنه. نمیدونم مشکل کجاست.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

کد اون تابع رو بزار حتما یه مشکلی داره .

راستی شما یک کلاس جدید که مقادیر متعددی رو بسازه ساختین ؟؟

مثلا کلاسی که چند تا رشته و چندتا عدد اخلش نگه داره ؟؟

اگه این کار رو کردین و اطلاعات رو از دیتابیس به وسیله آرایه ای از این کلاس فراخونی میکنید باید بگم اخطار مربوط به این کلاس هست ..

به جای این آرایه از این کلاس باید از چند تا آرایه از نوع رشته یا عدد استفاده کنید تا مشکل رفع بشه ..

به هر حال :

کد رو اگه میشه بزارید بگم مشکل کجاست . . .


یا علی

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...