در بخش قبلی یک کلاس کمکی برای برنامه نویسی بانک اطلاعاتی در اندروید معرفی کردیم ، دراین بخش هم کلاس دیگری بنام dbhandler معرفی می کنیم. استفاده از این دو کلاس در برنامه ها نوشتن برنامه های بانک اطلاعاتی در اندروید را راحت تر می کند.
معرفی کلاس dbHandler
این کلاس برای اجرای عملیات مختلف روی بانک اطلاعاتی استفاده می شود. در داخل این کلاس دو متغیر برای بانک اطلاعاتی و کلاس dbopenhelper تعریف شده است. در صورت داشتن چند جدول در بانک اطلاعاتی باید چند کپی از این کلاس با اسامی مختلف در پروژه قرار داده و داخل هر کدام توابعی برای انجام عملیات روی هر کدام از جداول بنویسید. روش دیگر ارث بری کلاس های مربوط به جداول مختلف از این کلاس است در این صورت در داخل کلاس dbHandler تنها توابع عمومی قرارداده می شود.
مثال زیر برای جدول دانشجویان نوشته شده است:
package com.example.dbstart;import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;public class dbHandler {
private dbopenhelper db_helper;
private SQLiteDatabase database;
public dbHandler(Context context)
{
db_helper=new dbopenhelper(context);}
public void Open()
{
database=db_helper.getWritableDatabase();
}
public void Close()
{
db_helper.close();
}
public String getStudRow(int p)
{
Cursor cr=database.query("tbl_studs",null, null, null, null, null, null);
cr.moveToPosition(p);
String row=cr.getString(1)+"\t"+cr.getString(2)+"\t"+cr.getString(3);return row;
}
public void Insert(String tb,String name , float avgr,int fid)
{
ContentValues cv= new ContentValues();
cv.put("name", name);
cv.put("avgr", avgr);
cv.put("fid", fid);
database.insert(tb,"cname",cv);}
public int Count(String tb)
{
Cursor cr=database.query(tb,null, null, null, null, null, null);
int n=cr.getCount();
return n;
}
}
شرح کلاس dbHandler
گفته شد این کلاس برای انجام عملیات روی جدول دانشجویان پیاده سازی شده است و دارای توابع زیر است:
تابع dbHandler : این تابع سازنده یک شیء dbopenhelper ایجاد می کند.
public dbHandler(Context context)
{
db_helper=new dbopenhelper(context);
}
تابع Open : برای بازکردن بانک اطلاعاتی در حالت نوشتنی استفاده می شود.
public void Open()
{
database=db_helper.getWritableDatabase();
}
تابع Close: برای بستن بانک اطلاعاتی استفاده می شود.
public void Close()
{
db_helper.close();
}
تابع getStudRow : این تابع شماره سطر را بعنوان پارامتر دریافت کرده ، ابتدا تابع query از کلاس SQLiteOpenHepler (کلاس پدربزرگ!) را فراخوانی می کند. این تابع دارای پارامترهای مختلف از جمله نام جدول بانک اطلاعاتی بوده و سطرهای آنرا از بانک اطلاعاتی می خواند. سپس به شماره سطر وارد شده از طریق پارامتر p رفته و فیلدهای رکورد p ام را به صورت رشته ای با هم الحاق کرده و مشخصات دانشجو را بصورت یک رشته ساده برمی گرداند.
public String getStudRow(int p)
{
Cursor cr=database.query("tbl_studs",null, null, null, null, null, null);
cr.moveToPosition(p);
String row=cr.getString(1)+"\t"+cr.getString(2)+"\t"+cr.getString(3);
return row;
}
تابع Insert : فیلدهای رکورد (مشخصات دانشجو) را بعنوان پارامتر دریافت کرده یک شیء ContentValue ایجاد کرده و مشخصات را در آن قرار می دهد و در پایان تابع insert از کلاس پدربزرگ! (SQLiteOpenHepler )را فراخوانی می کند .
public void Insert(String tb,String name , float avgr,int fid)
{
ContentValues cv= new ContentValues();
cv.put("name", name);
cv.put("avgr", avgr);
cv.put("fid", fid);
database.insert(tb,"cname",cv);
}
تابع Count : نام جدول را بعنوان پارامتر دریافت کرده و یک پرس و جو روی جدول اجرا می کند و تعداد سطرهای بدست آمده را برمی گرداند.
public int Count(String tb)
{
Cursor cr=database.query(tb,null, null, null, null, null, null);
int n=cr.getCount();
return n;
}
در این بخش و بخش قبلی به معرفی کلاس های dbopenhelper و کلاس dbhandler پرداختیم که برای انجام عملیات مختلف روی بانک اطلاعاتی در برنامه نویسی اندروید استفاده می شود. در بخش بعدی روش استفاده از این دو کلاس در اکتیویتی را آموزش داده و نمونه پروژه ای برای دانلود خواهیم گذاشت که از این کلاس ها استفاده کرده است.