تالار گفتمان nCIS.ir

نسخه‌ی کامل: مشکل ایجاد نشدن دیتابیس در کد نویسی اندروید
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با سلام و عرض ادب بنده یه پروژه دارم شامل سه کلاس،این پروژه ساده قراره که نام و نام خانوادگی کاربر رو بگیره و وقتی روی دکمه Button کلیک میشه،اطلاعات را در دیتابیس ذخیره کنه،اما مشکل اینجاست که دیتابیسی ایجاد نمیشه.میشه کمک کنید و مشکل رو بهم بگین؟

این کلاس اصلی برنامه تحت عنوان MainActivity.java :
public class MainActivity extends AppCompatActivity {
   EditText editText1,editText2;


   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       editText1 = (EditText) findViewById(R.id.editText);
       editText2 = (EditText) findViewById(R.id.editText2);

       findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               String name = editText1.getText().toString();
               String family = editText2.getText().toString();

           }
       });
   }
}


کلاس دیگمون تحت عنوان Person :
public class Person {

   private long id;
   private String name;
   private String family;

   public Person() {
   }

   public Person(String name, String family) {
       this.name = name;
       this.family = family;
   }

   public Person(long id, String name, String family) {
       this.id = id;
       this.name = name;
       this.family = family;
   }

   public long getId() {
       return id;
   }

   public void setId(long id) {
       this.id = id;
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public String getFamily() {
       return family;
   }

   public void setFamily(String family) {
       this.family = family;
   }
}


و در نهایت PersonDatabaseAdapter :


public class PersonDatabaseAdapter {

   private Context context;
   private SQLiteOpenHelper sqLiteOpenHelper;

   public PersonDatabaseAdapter(Context context) {
       this.context = context;
       sqLiteOpenHelper = new SQLiteOpenHelper(context, "database.db", null, 1) {

           @Override
           public void onCreate(SQLiteDatabase db) {
               String sql = "create table tbl_persons (id integer primary key, name text, family text)";
               db.execSQL(sql);
           }

           @Override
           public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

           }
       };
   }

   public long savePerson(Person person) {
       String name = person.getName();
       String family = person.getFamily();
       long id = -1;

       SQLiteDatabase database = null;

       try {
           ContentValues values = new ContentValues();
           values.put("name", name);
           values.put("family", family);

           database = sqLiteOpenHelper.getWritableDatabase();
           id = database.insert("tbl_persons", null, values);
       } catch (Exception ex) {
           Log.d("Database", "Exception:" + ex.getMessage());
       } finally {
           if( database != null && database.isOpen()) {
               database.close();
           }
       }

       return id;
   }

}


مشکل عدم ایجاد دیتابیس کجاست؟ Undecided
کسی نبود کمک کنه؟
سلام
شما کلاس PersonDatabaseAdapter رو اجرا نمیکنید تا دیتابیستون ساخته بشه.
و هم چنین هیچ مقداری رو به Person اضافه نمیکنید تا در دیتابیس ذخیره بشه.

روش های بهتری برای ساخت دیتابیس وجود داره این روشی که شما انتخاب کردید به نظر من روش خوبی نیست اگه خاستید روش دیگش رو توضیح میدم بهتون ولی درباره این مشکلتون یه بار کلاس PersonDatabaseAdapter رو اجرا کنید توی کلاس اصلیتون و داخل onCreate.
SQLiteDatabase DB = new PersonDatabaseAdapter(MainActivity.this);

حالا میتونین با فراخوانی متدهایی که توی کلاس تعریف میکنین روی شئ DB کارهای لازم رو انجام بدین.
(12-10-1395، 02:15 ق.ظ)balutsoft نوشته: [ -> ]سلام
شما کلاس PersonDatabaseAdapter رو اجرا نمیکنید تا دیتابیستون ساخته بشه.
و هم چنین هیچ مقداری رو به Person اضافه نمیکنید تا در دیتابیس ذخیره بشه.

روش های بهتری برای ساخت دیتابیس وجود داره این روشی که شما انتخاب کردید به نظر من روش خوبی نیست اگه خاستید روش دیگش رو توضیح میدم بهتون ولی درباره این مشکلتون یه بار کلاس PersonDatabaseAdapter رو اجرا کنید توی کلاس اصلیتون و داخل onCreate.

مرسی از پاسختون،میشه راهنمایی کنید که چجور PersonDatabaseAdapter رو اجراکنم؟آخه من savaPerson(0 رو که توی کلاس MainActivity صدا میزنم،میگه cannot resolve method 'savePerson
استاد شهرکی پاسختون رو دادن.
قبل از اجرای متد import کنید کلاستون رو.