您的位置:首页 > 移动开发 > Android开发

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

2015-06-21 10:16 971 查看
在上一篇博客中,介绍了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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: