Android数据库SQLite使用详解二 : 学生管理系统的简单实现


    在上一篇博客中,介绍了SQLiteOpenHelper这个最基本的类,今天就实现一个简单的学生信息数据库,能实现增,删,查,改四个基本功能

    首先就是要抽象出学生这个类,代码如下:


    

/**
 * 学生的抽象类型
 *
 * 其中存放着学生表的表明和其字段名
 */
public class StuModel {

    //学生表名
    public  static  String StuDataBaseTableName = "StudentDBTable";

    //表中列名
    public  static  String StuTableId = "stuId";

    //表中列名
    public  static  String StuTableName = "name";

    //表中列名
    public  static  String StuTableAge = "age";



    //学生学号
    private  int stuId;

    //学生姓名
    private  String name;

    //学生年龄
    private  int age;

    public  StuModel(int stuId,String name,int age){

        this.stuId = stuId;
        this.name = name;
        this.age = age;

    }



    public int getStuId() {
        return stuId;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

    接下来就是实现了SQLiteOpenHelper这个抽象类的操作数据库的封装类SqLiteHelper,这个源码在上一篇博客已经给出

  

    有了数据库的封装类,那么就要写一个操作数据库的工具类,这么我们在使用数据库的时候,不用从SqLiteHelper这个类中得到dataBase,然后在

让其执行语句,这么着的话重复代码太多,所以我们必须要将重复调用的代码封装成一个工具类,方便调用

    

        
/**
 * 操控数据库的封装类
 */

public class StuDataBaseController {

    public  static  final  String DBName = "DB";

    private  SQLiteOpenHelper helper;

    private SQLiteDatabase database;

    public  StuDataBaseController(Context context){

        
        helper = new SqLiteHelper(context,DBName,null,1);

        database = helper.getWritableDatabase();

    }


    /**
     * 传入一个学生对象,将其添加到数据库中
     * @param model  学生对象
     */
    public  void  insertToDataBase(StuModel model){


        if (database!=null){

            database.execSQL("INSERT INTO "+
                    StuModel.StuDataBaseTableName+" VALUES ('"+
                    model.getStuId()+
                    "','"+
                    model.getName()+
                    "','"+model.getAge()+
                    "');");

        }

    }


    /**
     * 将数据库中指定ID的数据改为指定年龄
     * @param stuId
     * @param stuAge
     */
    public  void  changeStuAge(int stuId,int stuAge){

        if (database!=null){

              database.execSQL("UPDATE  "+
                      StuModel.StuDataBaseTableName+
                      " SET "+StuModel.StuTableAge +"='"+
                      stuAge+"' WHERE "+StuModel.StuTableId
                      +"='"+stuId+"'");

        }

    }


    /**
     * 查询整个数据库
     */
    public  void selectFromDataBase(){

        if (database!=null){

            int i = 0;

            Cursor cursor = database.rawQuery("select * from "+StuModel.StuDataBaseTableName+";",null);

            while (cursor.moveToNext()){

                int id = cursor.getInt(cursor.getColumnIndex(StuModel.StuTableId));

                String name = cursor.getString(cursor.getColumnIndex(StuModel.StuTableName));

                int age = cursor.getInt(cursor.getColumnIndex(StuModel.StuTableAge));

                Log.i(StuDataBaseController.DBName,"第"+i+"个学生的id为 "+id+"\n 姓名是 "+name+"\n 年龄是 "+age);

                i++;

            }

        }

    }

    /**
     * 将数据库中所有数据删除
     */
    public  void  deleteDataBase(){

        if (database!=null){

            database.execSQL("DELETE FROM "+StuModel.StuDataBaseTableName);

        }

    }



    /**
     * 关闭数据库的方法
     */
    public void  close(){

        if (database!=null){
            database.close();
        }
        if (helper!=null ){
            helper.close();
        }

    }



}
  

  最后就是在MainActivity中使用

  

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        StuModel model = new StuModel(1,"LiMing",18);

        StuDataBaseController controller = new StuDataBaseController(MainActivity.this);


        controller.insertToDataBase(model);

        controller.selectFromDataBase();

        controller.changeStuAge(1,28);

        controller.selectFromDataBase();

        controller.deleteDataBase();

        controller.close();


    }


}

  执行结果如下:

  执行了SqLiteHelper的初始化方法


  执行了SqLiteHelper的onCreate方法


  第0个学生的id为 1
  姓名是 LiMing
  年龄是 18


  第0个学生的id为 1
  姓名是 LiMing
   年龄是 28

   

你可能感兴趣的:(android,数据库,sqlite,database,Cursor)