1. 程式人生 > >安卓開發-sqLite增刪改查

安卓開發-sqLite增刪改查

結構分析:


一:新建資料庫幫助類StudentHelper.class

public class StudentHelper extends SQLiteOpenHelper {
	public StudentHelper(Context context) {
		super(context, "student",null,1);
		// TODO Auto-generated constructor stub
	}
	@Override
	public void onCreate(SQLiteDatabase sqLiteDatabase) {
		// TODO Auto-generated method stub
		sqLiteDatabase.execSQL("create table students (_id integer primary key autoincrement,name varchar(30),number varchar(20),sex varchar(6))");
	}
	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
		// TODO Auto-generated method stub

	}

}

    注意點:

    1、建立類的時候注意繼承sqliteopenhelper

    2、自動建立的預設建構函式中的引數只需要Context context即可

    3.onCreate方法只會在第一次程式執行時執行,重複執行需要在虛擬機器中清空資料並強制停止再重新執行 

二:新建資料庫DAO

public class StudentDAO {
	private StudentHelper studentHelper;
	
	public StudentDAO(Context context) {
		studentHelper=new StudentHelper(context);
	}

        //增加操作
	public void add(String name,String number,String sex) {
		SQLiteDatabase sqLiteDatabase=studentHelper.getWritableDatabase();
		sqLiteDatabase.execSQL("insert into students (name,number,sex) values (?,?,?)", new Object[]{name,number,sex});
		sqLiteDatabase.close();
	}
        //刪除操作
	public void del(String name) {
		SQLiteDatabase sqLiteDatabase=studentHelper.getWritableDatabase();
		sqLiteDatabase.execSQL("delete from students where name=?",new Object[]{name});
		sqLiteDatabase.close();
	}
        //更新操作
	public void update(String name,String number,String sex){
		SQLiteDatabase sqLiteDatabase=studentHelper.getWritableDatabase();
		sqLiteDatabase.execSQL("update students set number =?,sex=? where name =?",new Object[]{number,sex,name});
		sqLiteDatabase.close();
	}
        //查詢操作(判斷是否存在並返回boolean型別結果)
	public boolean find(String name){
		String sex="";	
		String number="";
		SQLiteDatabase sqLiteDatabase=studentHelper.getWritableDatabase();
		Cursor cursor=sqLiteDatabase.rawQuery("select number,sex from students where name=?", new String[]{name});
		boolean result=cursor.moveToNext();
		boolean find_result=false;
		if(result){
//			number=cursor.getString(0);
//			sex=cursor.getString(1);
			find_result=true;
		}				
		cursor.close();
		sqLiteDatabase.close();
		return find_result;
	}
        //精確查詢(獲取到查詢結果的資訊並返回)
	public String find_a(String name){
		String sex="";	
		String number="";
		SQLiteDatabase sqLiteDatabase=studentHelper.getWritableDatabase();
		Cursor cursor=sqLiteDatabase.rawQuery("select number,sex from students where name=?", new String[]{name});
		boolean result=cursor.moveToNext();
		boolean find_result=false;
		if(result){
			number=cursor.getString(0);
			sex=cursor.getString(1);
			
		}				
		cursor.close();
		sqLiteDatabase.close();
		
		return number+","+sex;
	}
	
}
    注意點:因為操作資料庫都需要定義一個數據庫幫助類,所以將該步驟提取出來封裝成一個構造方法並預設傳入context
private StudentHelper studentHelper;	
	public StudentDAO(Context context) {
		studentHelper=new StudentHelper(context);
	}

三:Mainactivity呼叫DAO函式

//增加
public void sadd(View view){ StudentDAO studentDAO=new StudentDAO(this); String name=et1.getText().toString().trim(); String number=et2.getText().toString().trim(); String sex=null; int id=rg.getCheckedRadioButtonId(); if(id==R.id.rb1){ sex="男"; }else {sex="女";} if(TextUtils.isEmpty(name)||TextUtils.isEmpty(number)){ Toast.makeText(this, "姓名和學號不能為空",0).show(); return; } boolean find_result=studentDAO.find(name); if(find_result){ Toast.makeText(this, name+"已存在",0).show(); return; } studentDAO.add(name, number, sex); Toast.makeText(this, "儲存成功",0).show(); }
//刪除
    public void sdel(View view){
    	StudentDAO studentDAO=new StudentDAO(this);
    	String name=et1.getText().toString().trim();
    	boolean find_result=studentDAO.find(name);
    	if(TextUtils.isEmpty(name)){
    		Toast.makeText(this, "姓名不能為空",0).show();
    		return;
    	} 
    	if(!find_result){
    		Toast.makeText(this, name+"不存在",0).show();
    		return;
    	}	 	
    	studentDAO.del(name);
    	Toast.makeText(this, name+"已刪除",0).show();
    }
//更新
	public void supdate(View view){
		StudentDAO studentDAO=new StudentDAO(this);
		String name=et1.getText().toString().trim();
		String number=et2.getText().toString().trim();
    	String sex=null;
    	int id=rg.getCheckedRadioButtonId();
    	boolean find_result=studentDAO.find(name);
    	if(id==R.id.rb1){
    		sex="男";
    	}else {
			sex="女";
		}
    	if(TextUtils.isEmpty(name)||TextUtils.isEmpty(number)){
    		Toast.makeText(this, "姓名和學號不能為空",0).show();
    		return;
    	}
    	if(!find_result){
    		Toast.makeText(this, name+"不存在",0).show();
    		return;
    	}else {
    		studentDAO.update(name,number,sex);
		}	
    	
//    	String find_resultString=studentDAO.find_a(name);
//    	String[] arryresult=find_resultString.split(",");
//    	String newnumber=arryresult[0].toString();
//    	String newsex=arryresult[1].toString();
//    	if(number.equals(newnumber)&sex.equals(newsex)){
//    		Toast.makeText(this, "更新失敗",0).show();
//    		
//    	}else{
//    		Toast.makeText(this,newnumber+newsex,0).show();
//    	}
	    }
//查詢
	public void sfind(View view){
		StudentDAO studentDAO=new StudentDAO(this);
    	String find_name=et1.getText().toString().trim();
    	String find_result=studentDAO.find_a(find_name);
    	if(TextUtils.isEmpty(find_name)){
    		Toast.makeText(this, "姓名不能為空",0).show();
    		return;
    	}
    	if(find_result.length()>1){
    		String[] resultStrings=find_result.split(",");		
    		String newnumber=(String)resultStrings[0];
    		String newsex=(String)resultStrings[1];
    		System.out.println(newnumber);
    		Toast.makeText(this, "姓名:"+find_name+"\n"+"學號:"+newnumber+"\n"+"性別:"+newsex,0).show();
    		
    	}else{
    		Toast.makeText(this, "查無此人",0).show();
    	}	
    	
	}