mehdi_1368 0 ارسال شده در ۱۱ تیر ۱۳۹۵ گزارش اشتراک گذاری ارسال شده در ۱۱ تیر ۱۳۹۵ سلام دوستان از دیتابیس SQLite خارجی استفاده کردم که داخل پوشه assets هستش. همه کدها رو درست نوشتم اما وقتی قراره داده های دیتابیس رو داخل لیست ویو نشون بده فورس کلوز میده. مشکل کجاست؟ خطاهای لاکاوت نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
samirsamiri 6 ارسال شده در ۱۱ تیر ۱۳۹۵ گزارش اشتراک گذاری ارسال شده در ۱۱ تیر ۱۳۹۵ کد کلی برای ارتباط با دیتابیس خارجی ::::::::::::::: 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(); ---------------------------------- حالا خودت متد های دلخواهت رو داخلش بنویس ..... در ضمن در مورد اخطار کدت هم احتمالا آدرس رو اشتباه دادی یا نام دیتا بیست رو درست ندادی اگه میشه کد هاتو هم بزار تا راهنمایی کنیم . یا علی. نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
mehdi_1368 0 ارسال شده در ۱۱ تیر ۱۳۹۵ مالک گزارش اشتراک گذاری ارسال شده در ۱۱ تیر ۱۳۹۵ کد کلی برای ارتباط با دیتابیس خارجی ::::::::::::::: 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(); ---------------------------------- حالا خودت متد های دلخواهت رو داخلش بنویس ..... در ضمن در مورد اخطار کدت هم احتمالا آدرس رو اشتباه دادی یا نام دیتا بیست رو درست ندادی اگه میشه کد هاتو هم بزار تا راهنمایی کنیم . یا علی. دوست عزیز مشکل منکه این نیست. من کدهای دیتابیس رو همه رو درست نوشتم. یه تابع نوشتم که اطلاعات دیتابیس رو فراخونی میکنه. این تابع رو هم داخل رویداد کلیک دکمه نوشتم حالا وقتی کلیک میکنم برنامه کرش میکنه. نمیدونم مشکل کجاست. نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
samirsamiri 6 ارسال شده در ۱۱ تیر ۱۳۹۵ گزارش اشتراک گذاری ارسال شده در ۱۱ تیر ۱۳۹۵ کد اون تابع رو بزار حتما یه مشکلی داره . راستی شما یک کلاس جدید که مقادیر متعددی رو بسازه ساختین ؟؟ مثلا کلاسی که چند تا رشته و چندتا عدد اخلش نگه داره ؟؟ اگه این کار رو کردین و اطلاعات رو از دیتابیس به وسیله آرایه ای از این کلاس فراخونی میکنید باید بگم اخطار مربوط به این کلاس هست .. به جای این آرایه از این کلاس باید از چند تا آرایه از نوع رشته یا عدد استفاده کنید تا مشکل رفع بشه .. به هر حال : کد رو اگه میشه بزارید بگم مشکل کجاست . . . یا علی نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .