در این جلسه روش استفاده از کلاس های کمکی بانک اطلاعاتی dbopenhelper و dbHandler را در یک پروژه بانک اطلاعاتی اندروید آموزش می دهیم، برای این کار یک اکتیویتی دارای فرم اضافه کردن رکورد و نمایش لیست رکوردها را کدنویسی خواهیم کرد.
در دو جلسه قبلی با دو کلاس کمکی برای برنامه نویسی بانک اطلاعاتی در اندروید آشنا شدید برای استفاده از آنها فرض کنید طراحی برای اکتیویتی به صورت زیر باشد:
در رابط کاربری این اکتیویتی از جعبه متن هایی با شناسه های
studs_name : نام دانشجو
studs_avgr : معدل دانشجو
studs_fid : کدرشته دانشجو
استفاده شده و یک دکمه با شناسه studs_btn_add و یک لیست ویو (ListView) با نام studs_list
حال کلاس کدنویسی اکتیویتی توجه کنید:
package com.example.dbstart;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;public class Studs extends Activity {public dbopenhelper dbm;
private dbHandler db;private EditText txt_name,txt_avgr,txt_fid;
private Button btn_add;
private ListView list;
private String tbl;public Studs(){
tbl="tbl_studs";
}
//.............................
private void fillView()
{
int count=db.Count(tbl);
String[] rows=new String[count];
for(int i=0 ; i<count;i++)
rows[i] = db.getStudRow(i);
list.setAdapter(new ArrayAdapter<String> (this ,android.R.layout.simple_list_item_1 ,rows) );}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.studs);
//for create database ..............................
dbm=new dbopenhelper(this);
dbm.getWritableDatabase();
//...................................................
db=new dbHandler(this);
db.Open();
txt_name=(EditText)findViewById(R.id.studs_name);
txt_avgr=(EditText)findViewById(R.id.studs_avgr);
txt_fid =(EditText)findViewById(R.id.studs_fid);
btn_add=(Button)findViewById(R.id.studs_btn_add);
list =(ListView)findViewById(R.id.studs_list);
fillView();
btn_add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String name,avgr,fid;
name = txt_name.getText().toString();
avgr = txt_avgr.getText().toString();
fid = txt_fid.getText().toString();
db.Insert("tbl_studs",name,Float.parseFloat(avgr),Integer.parseInt(fid));
fillView();
}
});
}
}
در این کلاس دو شیء dbm از نوع کلاس dbopenhelper و db از نوع کلاس dbHandler تعریف شده است.
در تابع سازنده نام جدول بانک اطلاعاتی داخل متغیر رشته ای tbl قرارگرفته است.
در تابع fillView برای پرکردن لیست ویو از روی جدول دانشجویان، تعداد سطرهای جدول بدست آمده، آرایه ای با طول مورد نیاز تعریف شده و در طی یک حلقه تکرار رکوردهای دانشجویان بدست آمده و در آرایه قرار داده شده اند و در پایان با فراخوانی متد setAdapter از لیست ویو، آرایه دانشجویان برای نمایش به لیست ویو داده شده است.
private void fillView()
{
int count=db.Count(tbl);
String[] rows=new String[count];
for(int i=0 ; i<count;i++)
rows[i] = db.getStudRow(i);
list.setAdapter(new ArrayAdapter<String> (this ,android.R.layout.simple_list_item_1 ,rows) );}
در تابع onCreate که هنگام بارگذاری اکتیویتی به طور خودکار فراخوانی می شود، به اشیای dbm و db حافظه تخصیص داده شده و بانک اطلاعاتی باز شده و برای استفاده آماده شده است.
dbm=new dbopenhelper(this);
dbm.getWritableDatabase();
//...................................................db=new dbHandler(this);
db.Open();
در ادامه عناصر بصری روی رابط کاربری به اشیایی در داخل برنامه نسبت داده شده اند و با فراخوانی تابع fillView ، لیست ویو پر شده است:
txt_avgr=(EditText)findViewById(R.id.studs_avgr);
txt_fid =(EditText)findViewById(R.id.studs_fid);
btn_add=(Button)findViewById(R.id.studs_btn_add);
list =(ListView)findViewById(R.id.studs_list);
در ادامه تابعی برای رویداد کلیک دکمه تعریف شده است که در صورت کلیک روی دکمه studs_btn_add روی فرم مشخصات دانشجو وارد شده در جعبه متن هارا بدست آورده و با فراخوانی تابع Insert از کلاس پدر (dbHelper ) رکورد جدیدی در جدول بانک اطلاعاتی درج کند.
btn_add.setOnClickListener(new OnClickListener() {@Override
public void onClick(View arg0) {
// TODO Auto-generated method stubString name,avgr,fid;
name = txt_name.getText().toString();
avgr = txt_avgr.getText().toString();
fid = txt_fid.getText().toString();db.Insert("tbl_studs",name,Float.parseFloat(avgr),Integer.parseInt(fid));
fillView();}
});}
طی این جلسه و دو جلسه قبلی با یک نمونه کامل از برنامه نویسی بانک اطلاعاتی برای اندروید آشنا شدید . از لینک زیر برای دریافت نمونه پروژه استفاده کنید. این پروژه در محیط اکلیپس نوشته شده است.
دریافت نمونه پروژه بانک اطلاعاتی اندروید با کمک کلاسهای کمک dbopenhelper و dbHandler