sorooshpardaz

برنامه نویسی اندروید: آموزش پایگاه داده SQLite (قسمت دوم)

1 ارسال در این موضوع قرار دارد

در مقاله قبل در مورد پایگاه داده برنامه های اندروید صحبت کردیم و گفتیم پایگاه داده مورد استفاده برنامه های اندرویدی Sqlite می باشد، مولفه های مختلف Sqlite را معرفی کردیم در این مقاله یک نمونه مثال از این پایگاه داده را به همراه کدهای آن توضیح می دهیم.

مثال استفاده شده ساخت یک پایگاه داده برای ذخیره مخاطبین تلفن همراه است با استفاده از این پایگاه داده می توان اطلاعات تماس تلفن همراه را درج، حذف، ویرایش کرد.

برای تست این مثال می بایست آن را روی دستگاه واقعی دوربین دار تست کنید.

با استفاده از اندروید استودیو یک برنامه  کاربردی تحت عنوان com.example.sairamkrishna.myapplication بسازیم.

برای ساخت این برنامه و پایگاه داده به ترتیب مراحل زیر را انجام می دهیم:

1.برای ساخت این پروژه مطمئن شوید که اندروید SDK از آخرین نسخه پشتیبانی کند تا با  API های نسخه بالا همخوانی داشته باشند.

2.فایل SRC/MainActivity.java را می گذاریم تا توسط آن همه مولفه های XML و اخرین تماس ها را دریافت کند.

Src/DBHelper.java.3 را می سازیم، که عملکرد دیتابیس را مدیریت می کند.

4.یک مولفه جدید با عنوان  DisplayContact.java ایجاد می کنیم تا تماس های روی صفحه را نمایش دهد.

5.تغییر res/layout/activity_main و res/layout/activity_display_contact.xml که برای اضافه شدن مولفه های xml است.

6.تغییر فایل res/values/string.xml برای افزودن اجزای رشته ای ضروری است.

7.قرار دادن فایل res/menu/display_contact.xml برای ایجاد منوهای ضروری

8.ایجاد منو res/menu/mainmenu.xml برای قرار دادن امکان درج مخاطب

9.اجرای نرم افزار بر روی یک دستگاه اندرویدی و نصب برنامه روی آن

در ادامه کدهای مربوط به مرحل بالا را قرار می دهیم. با نوشتن این کدها مرحله به مرحله دیتا بیس ما ایجاد می شود.

 محتوای MainActivity.java. را با استفاده از کدهای زیر ویرایش می کنیم.


 

package com.example.sairamkrishna.myapplication;

import android.content.Context;

import android.content.Intent;

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;


import android.view.KeyEvent;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;


import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;


import java.util.ArrayList;

import java.util.List;


public class MainActivity extends ActionBarActivity {

   public final static String EXTRA_MESSAGE = "MESSAGE";

   private ListView obj;

   DBHelper mydb;

  

   @Override

   protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

     

      mydb = new DBHelper(this);

      ArrayList array_list = mydb.getAllCotacts();

      ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1, array_list);

     

      obj = (ListView)findViewById(R.id.listView1);

      obj.setAdapter(arrayAdapter);

      obj.setOnItemClickListener(new OnItemClickListener(){

         @Override

         public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {

            // TODO Auto-generated method stub

            int id_To_Search = arg2 + 1;

           

            Bundle dataBundle = new Bundle();

            dataBundle.putInt("id", id_To_Search);

           

            Intent intent = new Intent(getApplicationContext(),DisplayContact.class);

           

            intent.putExtras(dataBundle);

            startActivity(intent);

         }

      });

   }

  

   @Override

   public boolean onCreateOptionsMenu(Menu menu) {

      // Inflate the menu; this adds items to the action bar if it is present.

      getMenuInflater().inflate(R.menu.menu_main, menu);

      return true;

   }

  

   @Override

   public boolean onOptionsItemSelected(MenuItem item){

      super.onOptionsItemSelected(item);

     

      switch(item.getItemId())

      {

         case R.id.item1:Bundle dataBundle = new Bundle();

         dataBundle.putInt("id", 0);

        

         Intent intent = new Intent(getApplicationContext(),DisplayContact.class);

         intent.putExtras(dataBundle);

        

         startActivity(intent);

         return true;

         default:

         return super.onOptionsItemSelected(item);

      }

   }

  

   public boolean onKeyDown(int keycode, KeyEvent event) {

      if (keycode == KeyEvent.KEYCODE_BACK) {

         moveTaskToBack(true);

      }

      return super.onKeyDown(keycode, event);

   }

}

 

در زیر محتوای فایل DisplayContact.java برای تطبیق با برنامه اصلاح شده است:


 

package com.example.addressbook;


import android.os.Bundle;

import android.app.Activity;

import android.app.AlertDialog;


import android.content.DialogInterface;

import android.content.Intent;

import android.database.Cursor;


import android.view.Menu;

import android.view.MenuItem;

import android.view.View;


import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;


public class DisplayContact extends Activity {

   int from_Where_I_Am_Coming = 0;

   private DBHelper mydb ;

  

   TextView name ;

   TextView phone;

   TextView email;

   TextView street;

   TextView place;

   int id_To_Update = 0;

  

   @Override

   protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_display_contact);

      name = (TextView) findViewById(R.id.editTextName);

      phone = (TextView) findViewById(R.id.editTextPhone);

      email = (TextView) findViewById(R.id.editTextStreet);

      street = (TextView) findViewById(R.id.editTextEmail);

      place = (TextView) findViewById(R.id.editTextCity);


      mydb = new DBHelper(this);


      Bundle extras = getIntent().getExtras();

      if(extras !=null)

      {

         int Value = extras.getInt("id");

        

         if(Value>0){

            //means this is the view part not the add contact part.

            Cursor rs = mydb.getData(Value);

            id_To_Update = Value;

            rs.moveToFirst();

           

            String nam = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_NAME));

            String phon = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_PHONE));

            String emai = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_EMAIL));

            String stree = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_STREET));

            String plac = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_CITY));

           

            if (!rs.isClosed())

            {

               rs.close();

            }

            Button b = (Button)findViewById(R.id.button1);

            b.setVisibility(View.INVISIBLE);


            name.setText((CharSequence)nam);

            name.setFocusable(false);

            name.setClickable(false);


            phone.setText((CharSequence)phon);

            phone.setFocusable(false);

            phone.setClickable(false);


            email.setText((CharSequence)emai);

            email.setFocusable(false);

            email.setClickable(false);


            street.setText((CharSequence)stree);

            street.setFocusable(false);

            street.setClickable(false);


            place.setText((CharSequence)plac);

            place.setFocusable(false);

            place.setClickable(false);

         }

      }

   }

  

   @Override

   public boolean onCreateOptionsMenu(Menu menu) {

      // Inflate the menu; this adds items to the action bar if it is present.

      Bundle extras = getIntent().getExtras();

     

      if(extras !=null)

      {

         int Value = extras.getInt("id");

         if(Value>0){

            getMenuInflater().inflate(R.menu.display_contact, menu);

         }

        

         else{

            getMenuInflater().inflate(R.menu.main, menu);

         }

      }

      return true;

   }


   public boolean onOptionsItemSelected(MenuItem item)

   {

      super.onOptionsItemSelected(item);

      switch(item.getItemId())

   {

      case R.id.Edit_Contact:

      Button b = (Button)findViewById(R.id.button1);

      b.setVisibility(View.VISIBLE);

      name.setEnabled(true);

      name.setFocusableInTouchMode(true);

      name.setClickable(true);


      phone.setEnabled(true);

      phone.setFocusableInTouchMode(true);

      phone.setClickable(true);


      email.setEnabled(true);

      email.setFocusableInTouchMode(true);

      email.setClickable(true);


      street.setEnabled(true);

      street.setFocusableInTouchMode(true);

      street.setClickable(true);


      place.setEnabled(true);

      place.setFocusableInTouchMode(true);

      place.setClickable(true);


      return true;

      case R.id.Delete_Contact:


      AlertDialog.Builder builder = new AlertDialog.Builder(this);

      builder.setMessage(R.string.deleteContact)

      .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {

         public void onClick(DialogInterface dialog, int id) {

            mydb.deleteContact(id_To_Update);

            Toast.makeText(getApplicationContext(), "Deleted Successfully", Toast.LENGTH_SHORT).show(); 

            Intent intent = new Intent(getApplicationContext(),MainActivity.class);

            startActivity(intent);

         }

      })

      .setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {

         public void onClick(DialogInterface dialog, int id) {

            // User cancelled the dialog

         }

      });

      AlertDialog d = builder.create();

      d.setTitle("Are you sure");

      d.show();


      return true;

      default:

      return super.onOptionsItemSelected(item);


      }

   }


   public void run(View view)

   {   

      Bundle extras = getIntent().getExtras();

      if(extras !=null)

      {

         int Value = extras.getInt("id");

         if(Value>0){

            if(mydb.updateContact(id_To_Update,name.getText().toString(), phone.getText().toString(), email.getText().toString(), street.getText().toString(), place.getText().toString())){

               Toast.makeText(getApplicationContext(), "Updated", Toast.LENGTH_SHORT).show();

               Intent intent = new Intent(getApplicationContext(),MainActivity.class);

               startActivity(intent);

            }         

            else{

               Toast.makeText(getApplicationContext(), "not Updated", Toast.LENGTH_SHORT).show();   

            }

         }

         else{

            if(mydb.insertContact(name.getText().toString(), phone.getText().toString(), email.getText().toString(), street.getText().toString(), place.getText().toString())){

               Toast.makeText(getApplicationContext(), "done", Toast.LENGTH_SHORT).show(); 

            }         

           

            else{

               Toast.makeText(getApplicationContext(), "not done", Toast.LENGTH_SHORT).show();   

            }

            Intent intent = new Intent(getApplicationContext(),MainActivity.class);

            startActivity(intent);

         }

      }

   }

}

در مقاله بعدی می توانید ادامه آموزش را دنبال کنید.

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط conall
      سلام 
      من میخوام یه نرم افزار بنویسم که با سرور کار میکنه و ی سری داده توی دیتابیسی که روی سرورمه ذخیره و بازیابی میکنه برای این کار یه سری فایل php میخوام به عنوان واسط که همون api های من میشن
      حالا سوال اینجاس که ایجاد و کار کردن با این api  ها امن هست؟ 
      و چطور میتونم امنیتشو برقرار کنم 
      چون الان مثلا یه api برای افزودن پست داشته باشیم نرم افزار یه جیسون ارسال میکنه به سرور با اطلاعات مورد نیاز اون api حالا یه نفر که مشکل داره میتونه با sniff کردن اطلاعات ارسالی به اون api دسترسی پیدا کنه و یه پست به نام شخص دیگه ای ایجاد کنه ! 
      چطور این مشکل رو حل کنم ؟
      توی نرم افزار هایی مثل دیوار میخواستم چک کنم چون اونا از ssl استفاده میکردن نتونستم به جیسونی که میفرستم دسترسی پیدا کنم که ببینم چی کار کردن
    • توسط Aliartor
      وقتی با ران ادمین اجراش میخوام بکنم این ارورو میده ولی وقتی با دابل کیلیک میزنم اصلا اینم نشون نمیده چیزی نمایش پیدا نمیکنه یعنی اصلا اجرا نمیشه 

      Could not find main class com/intellij/idea/main
      اگه کسی بلده چیکاد کنم لطفا بهم بگین❤❤
    • توسط Aliartor
      وقتی با ران ادمین اجراش میخوام بکنم این ارورو میده ولی وقتی با دابل کیلیک میزنم اصلا اینم نشون نمیده چیزی نمایش پیدا نمیکنه یعنی اصلا اجرا نمیشه 

      Could not find main class com/intellij/idea/main
      اگه کسی بلده چیکاد کنم لطفا بهم بگین❤❤
    • توسط AminAnsari
      سلام
      من میخوام یک برنامه ای بنویسم که به کاربر هر روز بگه چند ساعت با موبایلش کار کرده
      حالا من یه کرنومتر گذاشتم که این رو حساب کنه

      ولی یه مشکلی دارم که نمیتونم عملیش کنم, کرنومتر وقتی که صفحه خاموش هست باید استاپ بشه و وقتی که صفحه روشن هست ادامه بده به زمان گرفتن.( به صورت سرویس )
      با استفاده از isInterActive میدونم باید انجام بشه که یک مقدار بولین رو برمیگردونه که میگه صفحه روشنه یا نه, اما بلد نیستم که به چه صورت و کجا باید بزارمش!!!


      ممنون میشم کمک کنید
    • توسط mazdak
      سلام دوستان
      من پس از آپدیت اندروید استودیو دیگه دیوایس های مجازی من نمایش داده نمیشه با اینکه ران هستن.
      بنظرتون مشکل چیه؟؟
       


  • دوره آموزشی اندروید آموزش ویدئویی اندروید آموزش برنامه نویسی اندروید اندروید کاپ دوره آنلاین اندروید کتاب های آموزشی اندروید بسته آموزشی اندروید دوره برنامه نویسی اندروید آموزش Kotlin آموزش برنامه نویسی ios مهارت های فروش
    آموزش برنامه نویسی اندروید
  • فایل