درج اطلاعات تکراری در دیتابیس
سلام
مشکلی که دارم اینه که به ازای هر بار که برنامه رو ران می کنم اطلاعات دیتا بیسم دوباره درج میشه؛ یعنی اگه دفعه اول 3 ردیف اطلاعات دارم ؛ دفعه دوم میشه 4 تا !!!!!
ممنون میشم کمکم کنید!
من همون کدی که استاد توی آموزش قسمت 14ام گذاشتن رو نوشتم ؛ استاد خودشون برای جلوگیری از درج شدن تکراری اطلاعات به صورت کامنت کردن.
اما من می خوام مجبور نشم اطلاعاتمو به صورت کامنت کنم ؛ با php ننوشتم!
شما می خواهید هر بار که برنامه اجرا شد در صورت خالی بودن Table در دیتابیس، به اون جدول اطلاعات واریز کنه
خب خیلی آسونه
private void CreateTable() {
// ساخت جدول
G.db.execSQL("CREATE TABLE IF NOT EXISTS TableName(" +
"id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , " +
"fldTitle TEXT, " +
"fldContent TEXT, " +
"fldBool BOOL, " +
"fldNumber INTEGER" +
")");
Log.i(G.LOG_TAG, "TableNameCreated Successfully");
cursor = G.db.rawQuery("SELECT * FROM TableName", null);
if ( !cursor.moveToNext()) {
AddingValuesToTblNationalID();
// اگر جدول خالی بود و رکوردی پیدا نشد
} else {
Log.i(G.LOG_TAG, "tblNationalID Obtained Values Before");
// اگر اطلاعات درج شده بود
}
cursor.close();
}
توجه داشته باشید، با :
if ( !cursor.moveToNext())
شرط می ذاریم که اگر cursor چیزی رو پیدا نکرد
لطفا کدتون رو بذارید تا در صورت وجود ایراد تصحیح بشه
شما در هر بار باید بررسی کنید که اطلاعات تو جدول وجود داره یا نه اگر اون اطلاعات وجود داشت خوب اینسرت صورت نگیره اگر وجود نداشت اینسرت انجام بشه ...
//Check
int id = 1;
Cursor rawQ = Global.appDatabase.rawQuery("SELECT count(*) FROM transactions WHERE `transaction_id` = '" + id + "'", null);
rawQ.moveToFirst();
int cTransactionCount = rawQ.getInt(0);
rawQ.close();
if (cTransactionCount <= 0) {
// inja agar on etelat vojod nadasht inset anjam beshavad
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .