💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ پوریا شفیعی
ست کردن ای دی ؟!)Primary KEY
محسن موحد حل شده توسط محسن موحد

استاد وقت بخیر 

سوالی که ذهنمو درگیر کرده اینه که ما در کلاس SQLiteHelper اومدیم و با استفاده از کد‌های SQL برای id پرایمری کی تعریف کردیم و روی حالت Auto گذاشتیم که خودش ای دی درست کنه!

اما در اموزش دیدیم در متد callBack شده اینترفیسمون که ای دی رو خودمون ست کردیم 

مگر اینطور نبود که خودش اتوماتیک ای دیی واسه خودش ست کنه؟

public void onNewTaskCallBack(Task task) {
    long resultId = sqLiteHelper.addTask(task);
    if(resultId>0){
      task.setId(resultId);
    }
  }

 

سلام.

آیدی رو خودمون ست نکردیم. خروجی متد addTask که داخل کلاس دیتابیس هست،  آیدی generate شده هست.

long resultId = sqLiteHelper.addTask(task);

کد بالا، عمل اینسرتو انجام میده و داخل دیتابیس آیدی ست میشه و برمیگردونه.

اما:

task.setId(resultId);

متغیر task یک instance خالی از کلاس Task هست. ویدیو رو ببین که قبل از callback.onNewTask کدهای زیر اومده:

Task task = new Task();
task.setTitle("...");
task.setCompleted(false);
callback.onNewTask(task);

 

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

بهترین پاسخ
محسن موحد ۱۸ فروردین ۱۳۹۹، ۰۹:۰۲