مثال ساده ازپایگاه داده SQLite در اندروید

چهارشنبه 27 آبان 1394

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

مثال ساده ازپایگاه داده SQLite در اندروید

در این مقاله از بهترین و ساده ترین روش برای افرودن و ویرایش و حذف اطلاعات استفاده کرده ایم، در این مقاله سعی داریم که کاربر با دستورات ابتدایی sql آشنا شود و نحوه ی استفاده از آن را در اندروید مشاهده نماید.

برای همین ما از یک سیستم مدیریت دانشجو استفاده کرده ایم که امکانات افزودن و ویرایش و حذف و نمایش کل اطلاعات و نمایش اطلاعات در EditText را دارد.

در این مثال ما یک جدول درست کرده ایم و اطلاعات roleId و نام و نمره ی دانشجو در جدول ثبت می شود، کلاس SQLiteDatabase از package android.database.sqlite استفاده شده است و قابلیت های مورد نیاز برای انجام دستکاری داده ها و عملیات پرس وجو در جدول sqlite انجام می شود.

در کد زیر به ما نشان می دهد که چگونه می توان یک پایگاه داده ساخت و یک جدول در آن ایجاد کرد.

db=openOrCreateDatabase("StudentDB", Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS student(rollno VARCHAR,name VARCHAR,marks VARCHAR);");

کد بالا از یک متد به نام openOrCreateDatabase  استفاده می کند، که برای باز کردن پایگاه داده و یا ایجاد یک پایگاه داده در صورتی که پایگاه داده درست نشده باشد.

پارامتر اول پایگاه داده مورد نظر را درست می کند و یا صدا می زند، پارامتر دوم نشان می دهد که فایل پایگاه داده تنها می تواند توسط نرم افزار یا به اشتراک گذاری کاربر قابل دسترس باشد پارامتر سوم اگر لازم نباشد می تواند null برگردد.

db.execSQL یک دستور sql را اجرا می کند، برای ایجاد جدول استفاده می شود، اگر در حال حاضر در پایگاه داده وجود داشته باشد.

در زیر کل کد متد onCreate() قرار دارد که به صورت زیر است:

که دکمه های مورد نظر را تعریف کرده است.

public void onCreate(Bundle savedInstanceState)
{
    <code>super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

// Initializing controls

    editRollno=(EditText)findViewById(R.id.editRollno);
    editName=(EditText)findViewById(R.id.editName);
    editMarks=(EditText)findViewById(R.id.editMarks);
    btnAdd=(Button)findViewById(R.id.btnAdd);
    btnDelete=(Button)findViewById(R.id.btnDelete);
    btnModify=(Button)findViewById(R.id.btnModify);
    btnView=(Button)findViewById(R.id.btnView);
    btnViewAll=(Button)findViewById(R.id.btnViewAll);
    btnShowInfo=(Button)findViewById(R.id.btnShowInfo);

// Registering event handlers

    btnAdd.setOnClickListener(this);
    btnDelete.setOnClickListener(this);
    btnModify.setOnClickListener(this);
    btnView.setOnClickListener(this);
    btnViewAll.setOnClickListener(this);
    btnShowInfo.setOnClickListener(this);

// Creating database and table

    db=openOrCreateDatabase("StudentDB", Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS student(rollno VARCHAR,name VARCHAR,marks VARCHAR);");
}

در متد OnClick() ما نیاز داریم که کد های افزودن ، ویرایش و حذف را بنویسیم، که در زیر کوئری افزودن را با استفاده از متد db.execSQL()  استفاده می نماییم.

همین طور که برای insert کوئری نوشتیم برای حذف کاربران هم از کوئری استفاده می کنیم.

db.execSQL("DELETE FROM student WHERE rollno='"+editRollno.getText()+"'");

خروجی افزودن کاربر به صورت زیر است:

برای ویرایش اطلاعات دانشجویان باید کد مورد نظر آن ها وارد شود و بعد اطلاعات را ویرایش نماییم به صورت زیر :

db.execSQL("UPDATE student SET name='"+editName.getText()+"',marks='"+
editMarks.getText()+"' WHERE rollno='"+editRollno.getText()+"'");

خروجی به صورت زیر است:

برای مشاهده ی جزئیات اطلاعات دانشجویان ما یک کوئری می نویسیم و از متد rawQuery() استفاده می کنیم به صورت زیر:

Cursor c=db.rawQuery("SELECT * FROM student WHERE rollno='"+editRollno.getText()+"'", null);
if(c.moveToFirst())
{
    editName.setText(c.getString(1));
    editMarks.setText(c.getString(2));
}

خروجی به صورت زیر خواهد بود:

کد بالا برای نمایش اطلاعات دانشجویان داخل EditText است که شماره را دریافت می کند و اطلاعات را داخل EditText بر می گرداند .

Cursor c=db.rawQuery("SELECT * FROM student", null);
if(c.getCount()==0)
{
    showMessage("Error", "No records found");
    return;
}
StringBuffer buffer=new StringBuffer();
while(c.moveToNext())
{
    buffer.append("Rollno: "+c.getString(0)+"\n");
    buffer.append("Name: "+c.getString(1)+"\n");
    buffer.append("Marks: "+c.getString(2)+"\n\n");
}
showMessage("Student Details", buffer.toString());

خروجی به صورت زیر خواهد بود:

خروجی کد برای حذف رکورد به صورت زیر است:

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

رویداد OnClick  به صورت زیر خواهد بود:

   public void onClick(View view)
    {
        if(view==btnAdd)
        {
            if(editRollno.getText().toString().trim().length()==0||
                    editName.getText().toString().trim().length()==0||
                    editMarks.getText().toString().trim().length()==0)
            {
                showMessage("خطا", "لطفا مقادیر را وارد نمایید");
                return;
            }
            db.execSQL("INSERT INTO student VALUES('"+editRollno.getText()+"','"+editName.getText()+
                    "','"+editMarks.getText()+"');");
            showMessage("با موفقیت انجام شد", "رکورد اضافه شد");
            clearText();
        }
        if(view==btnDelete)
        {
            if(editRollno.getText().toString().trim().length()==0)
            {
                showMessage("خطا", "لطفا اطلاعات را کامل نمایید");
                return;
            }
            Cursor c=db.rawQuery("SELECT * FROM student WHERE rollno='"+editRollno.getText()+"'", null);
            if(c.moveToFirst())
            {
                db.execSQL("DELETE FROM student WHERE rollno='"+editRollno.getText()+"'");
                showMessage("با موفقیت انجام شد", "رکورد حذف شد");
            }
            else
            {
                showMessage("خطا", "نا معتبر");
            }
            clearText();
        }
        if(view==btnModify)
        {
            if(editRollno.getText().toString().trim().length()==0)
            {
                showMessage("خطا", "لطفا کامل وارد نمایید");
                return;
            }
            Cursor c=db.rawQuery("SELECT * FROM student WHERE rollno='"+editRollno.getText()+"'", null);
            if(c.moveToFirst())
            {
                db.execSQL("UPDATE student SET name='"+editName.getText()+"',marks='"+editMarks.getText()+
                        "' WHERE rollno='"+editRollno.getText()+"'");
                showMessage("با موفقیت انجام شد", "رکورد ویرایش شد");
            }
            else
            {
                showMessage("خطا", "نا معتبر");
            }
            clearText();
        }
        if(view==btnView)
        {
            if(editRollno.getText().toString().trim().length()==0)
            {
                showMessage("خطا", "لطفا اطلاعات را وارد نمایید");
                return;
            }
            Cursor c=db.rawQuery("SELECT * FROM student WHERE rollno='"+editRollno.getText()+"'", null);
            if(c.moveToFirst())
            {
                editName.setText(c.getString(1));
                editMarks.setText(c.getString(2));
            }
            else
            {
                showMessage("خطا", "نا معتبر");
                clearText();
            }
        }
        if(view==btnViewAll)
        {
            Cursor c=db.rawQuery("SELECT * FROM student", null);
            if(c.getCount()==0)
            {
                showMessage("خطا", "رکورد مورد نظر یافت نشد");
                return;
            }
            StringBuffer buffer=new StringBuffer();
            while(c.moveToNext())
            {
                buffer.append("Rollno: "+c.getString(0)+"\n");
                buffer.append("Name: "+c.getString(1)+"\n");
                buffer.append("Marks: "+c.getString(2)+"\n\n");
            }
            showMessage("جزئیات دانشجویان", buffer.toString());
        }
        if(view==btnShowInfo)
        {
            showMessage("مرجع تخصصی برنامه نویسان", "برنامه نویسان");
        }
    }
    public void showMessage(String title,String message)
    {
        AlertDialog.Builder builder=new AlertDialog.Builder(this);
        builder.setCancelable(true);
        builder.setTitle(title);
        builder.setMessage(message);
        builder.show();
    }
    public void clearText()
    {
        editRollno.setText("");
        editName.setText("");
        editMarks.setText("");
        editRollno.requestFocus();
    }

تابع زیر پیام ها را به کاربران نمایش می دهد

public void showMessage(String title,String message)
{
    Builder builder=new Builder(this);
    builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(message);
    builder.show();
}

از کد زیر هم برای پاک کردن اطلاعات داخل EditText است ، که بعد از ذخیره کردن و انجام شده هر کوئری داخل آن پاک می شود.

public void clearText()
{
    editRollno.setText("");
    editName.setText("");
    editMarks.setText("");
    editRollno.requestFocus();
}

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید