安卓开发-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();
    	}	
    	
	}


猜你喜欢

转载自blog.csdn.net/hhyihquk1/article/details/80448133
今日推荐