PDA

View Full Version : اتصال دو برنامه به یک دیتابیس SQlite



techerfan
جمعه 26 شهریور 1395, 13:38 عصر
سلام
بنده دو برنامه میخوام بنویسم که متصل به یک دیتابیس باشن
به این صورت که تو یک برنامه اطلاعاتو وارد کنم و تو برنامه بعدی اطلاعات نمایش داده بشه
بخاطر همین باید ادرس پیش فرض دخیره سازی دیتابیسو عوض میکردم اما متاسفانه به هنگام دیباگ کردن برنامه اجرا نمیشه
بوسیله این خط کد مسیر پیش فرضو عوض کردم:
final SQLiteDatabase mydb = openOrCreateDatabase("/storage/emulated/0/databases/"+dataBaseName,this.MODE_PRIVATE,null);
حالا اگر راه حلی به ذهنتون میرسه مممنون میشم کمکم کنید.

omidn1996
جمعه 26 شهریور 1395, 14:04 عصر
سلام
بنده دو برنامه میخوام بنویسم که متصل به یک دیتابیس باشن
به این صورت که تو یک برنامه اطلاعاتو وارد کنم و تو برنامه بعدی اطلاعات نمایش داده بشه
بخاطر همین باید ادرس پیش فرض دخیره سازی دیتابیسو عوض میکردم اما متاسفانه به هنگام دیباگ کردن برنامه اجرا نمیشه
بوسیله این خط کد مسیر پیش فرضو عوض کردم:
final SQLiteDatabase mydb = openOrCreateDatabase("/storage/emulated/0/databases/"+dataBaseName,this.MODE_PRIVATE,null);
حالا اگر راه حلی به ذهنتون میرسه مممنون میشم کمکم کنید.

فکر نمیکنم همچین موردی امکان پذیر باشه که بتونید از دیتابیس یک برنامه ی دیگه بخونید ، برای اینکار فکر کنم راهی جز استفاده از دیتابیس آنلاین نباشه

spiderman200700
جمعه 26 شهریور 1395, 15:52 عصر
راه داره خوبشم داره.

منیفست برنامه ی اول(برنامه ای که دیتابیس رو به اشتراک میزاره) رو اینجوری تعریف کنید:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:sharedUserId="my.app" ... >
sharedUserId نام پکیج برنامه ی دومه

بعد در برنامه دوم وقتی میخوای از دیتابیس استفاده کنی Context رو اینجوری ایجاد کن:
try {
Context sharedContext = activity.createPackageContext("host.package.name", Context.CONTEXT_INCLUDE_CODE);
} catch (Exception e) {

}
host.package.name نام پکیج برنامه ی اوله(برنامه ای که دیتابیس رو به اشتراک میزاره)

بعد هم از Context ایجاد شده برای استفاده از دیتابیس استفاده کنید.
DBHelper sharedDBadapter = new DBHelper(sharedContext);
sharedDBadapter.open();

techerfan
جمعه 26 شهریور 1395, 17:25 عصر
واقعا ممنونم
خیلی لنگش بودم
البته فکر کنم مشابه همینو تو stack over flow دیدم ولی متاسفانه دقت نکردم ببینم چی میگه در هر حال ممنون:بوس:
فقط یه سوال داشتم تو این خط :
Context sharedContext = activity.createPackageContext("host.package.name", Context.CONTEXT_INCLUDE_CODE);

منظور از activity چیه دقیقا؟؟

spiderman200700
جمعه 26 شهریور 1395, 18:03 عصر
توی پروژه من این تکه کد توی یه Adapter بود که من آبجکت Activity رو به Adapter پاس داده بودم. به همین خاطر(چون این کد ها توی اکتیویتی نبود) من از آبجکت برای ساخت Context استفاده کردم.
شما اگه توی کلاس Activity این خط رو قرار میدی، میتونی کلمه activity رو حذف کنی

techerfan
جمعه 26 شهریور 1395, 19:52 عصر
اهان حالا گرفتم
ممنون از کمکتون واقعا اساسی بود

spiderman200700
جمعه 26 شهریور 1395, 23:33 عصر
موفق باشید.
برای تشکر از دکمه تشکر کردن استفاده کنید