在上一篇博客中,介绍了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