PDA

View Full Version : آپیدت نشدن دیتابیس از پیش ساخته شده



Apriliyaa
جمعه 07 آذر 1393, 20:27 عصر
سلام
من یه دیتابیس ساختم برای کتاب اندرویدی
همه چیز خوبه ولی وقتی می خوام ادیتی رو متن یا عنوان توی دیتابیس انجام بدم با اینکه دیتابیس آپدیت میشه و متن داخلش سیو میشه اما برنامه ی اندروید رو اجرا می کنم هیچ تغییری مشاهده نمیشه و همون متنی که اولین بار توش ذخیره شده رو نشون میده
دلیلش چی می تونه باشه؟

dalmif
جمعه 07 آذر 1393, 20:48 عصر
سلام.
شما باید برنامه رو از روی گوشی پاک کنید و دوباره نصب کنید که دیتابیستون دوباره کپی بشه

Apriliyaa
جمعه 07 آذر 1393, 21:24 عصر
روی گوشی تست نرکدم
روی eclips تست کردم
حتی با ماشین مجازی های متعدد
اما باز همونه

dalmif
جمعه 07 آذر 1393, 21:36 عصر
متنی رو که مینویسه رو خودتون قبلا وارد کردید؟؟
ببینید شما یه بار همه چیز رو چک کنید که دارید درست از Table ها متن رو میگیرد.
نکنه یه وقتی دارید از یه تیبل قدیمی متنی رو میگیرد.

Apriliyaa
جمعه 07 آذر 1393, 22:28 عصر
نه رو یه دستابیس دیگه دارم کار می کنم
تیبل قدیمی؟

Apriliyaa
شنبه 08 آذر 1393, 13:33 عصر
مشکل همچنان پا برجاست

Apriliyaa
شنبه 08 آذر 1393, 13:33 عصر
مشکل همچنان پا برجاست .....................

dalmif
شنبه 08 آذر 1393, 13:53 عصر
سلام.
شما یه چک کامل بکنید که ببینید درست دارید انجام میدید.

saeed_g21
شنبه 08 آذر 1393, 16:38 عصر
سلام
من یه دیتابیس ساختم برای کتاب اندرویدی
همه چیز خوبه ولی وقتی می خوام ادیتی رو متن یا عنوان توی دیتابیس انجام بدم با اینکه دیتابیس آپدیت میشه و متن داخلش سیو میشه اما برنامه ی اندروید رو اجرا می کنم هیچ تغییری مشاهده نمیشه و همون متنی که اولین بار توش ذخیره شده رو نشون میده
دلیلش چی می تونه باشه؟


چون :

دیتابیس یکبار ایجاد و یا کپی میشود و چون شما قبل از اعمال تغییرات برنامه رو نصب کرده اید دیتابیس کپی شده و حال که میخواهید ورژن جدید دیتابیس رو کپی کنید این عمل صورت نمیپذیر مگر اینکه نسخه دیتابیس رو افزایش دهید تا تغییرات اعمالی صورت پذیرد و یا اینکه دیتابیس برنامه رو حذف کنید تا دوباره دیتابیس ایجاد یا کپی شود

_Developer_
شنبه 08 آذر 1393, 18:55 عصر
چون :

دیتابیس یکبار ایجاد و یا کپی میشود و چون شما قبل از اعمال تغییرات برنامه رو نصب کرده اید دیتابیس کپی شده و حال که میخواهید ورژن جدید دیتابیس رو کپی کنید این عمل صورت نمیپذیر مگر اینکه نسخه دیتابیس رو افزایش دهید تا تغییرات اعمالی صورت پذیرد و یا اینکه دیتابیس برنامه رو حذف کنید تا دوباره دیتابیس ایجاد یا کپی شود

منم چند وقت پیش همین مشکل رو داشتم...تاپیک زدم...اما به نتیجه نرسیدم...
میشه لطفا بگین چطوری میشه دیتابیس رو پاک کرد؟!
چون من ورژن دیتابیس رو بالا هم میبرم ...باز دیتابیس جدید کپی نمیشه...حتی اسمشو تغییر میدم بازم همون دیتابیس که قبلش نصب شده رو نشون میده...مگر unistall کردن کامل و نصب دوباره برنامه...
بدجوری گیرم مهندس

harani
شنبه 08 آذر 1393, 20:18 عصر
http://stackoverflow.com/questions/11601573/db-file-in-assets-folder-will-it-be-updated

Apriliyaa
شنبه 08 آذر 1393, 23:12 عصر
یه مقدار روون تر راهنمایی می کنید
.................

virus2009
شنبه 08 آذر 1393, 23:44 عصر
برای پاک کردن دیتابیس می تونید از این کد استفاده کنید :



boolean deleted = myContext.deleteDatabase(DB_NAME);
if (!deleted) {
myContext.getDatabasePath(DB_NAME).delete();
}

قبل از اجرای کد مطمئن شوید که دیتابیس close شده باشد، اگر نه برنامه باید بسته و دوباره باز شود تا حذف شدن دیتابیس اعمال گردد.
این کد رو میتونید یک بار، مثلا موقع آپدیت شدن نرم افزار، توسط shared Preferences انجام بدید.

roboman78
دوشنبه 15 دی 1393, 23:32 عصر
اگه دیتابیس جدیتون همون نام قبلیرو داره توی unupgrade میتونید ورژن رو بالا ببرید با توجه به ورژن دیتابیس قسمت schema version

amin_nez
سه شنبه 16 دی 1393, 01:07 صبح
با این کد هم میتونید دیتابیس ر حذف کنید!

MainActivity.this.deleteDatabase("DatabaseName");

به جای Databasename نام دیتابیس رو بنویسید

_Developer_
سه شنبه 16 دی 1393, 18:20 عصر
با این کد هم میتونید دیتابیس ر حذف کنید!

MainActivity.this.deleteDatabase("DatabaseName");

به جای Databasename نام دیتابیس رو بنویسید


واسه این هم باید از shared Preferences استفاده کنیم...
چطوری میتونیم بگیم موقع اپدیت برنامه قبلی رو حذف کنه ؟!

amin_nez
سه شنبه 16 دی 1393, 19:49 عصر
واسه این هم باید از shared Preferences استفاده کنیم...
چطوری میتونیم بگیم موقع اپدیت برنامه قبلی رو حذف کنه ؟!

میتونید از shared استفاده کنید

SharedPreferences settings=getSharedPreferences("settings", Context.MODE_PRIVATE);
try {
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName( ), 0);
int oldversion=settings.getInt("version", VERSIONCODE);
if (oldversion<pInfo.versionCode) {
MainActivity.this.deleteDatabase("DATABASENAME");
settings.edit().putInt("version", pInfo.versionCode).commit();
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}

به جای VERSIONCODE کد ورژن قبلی رو بگذارید تا برای بار اول دیتابیس قبلی پاک شه و ورژن جدید ست شه.
DATABASENAME هم با توجه به نام دیتابیس شما تغییر میکنه.
این کد ورژن فعلی برنامه رو میگیره و با قبلی که توی shared ذخیره شده مقایسه می کنه.اگه جدید بود دیتابیس رو حذف میکنه.