SQLite数据库存储数据的时候,首先必须继承SQLiteOpenHelper类:
[java]
view plain
copy
print
?
- publicclassDbOpenHelperextendsSQLiteOpenHelper{
-
- publicDbOpenHelper(Contextcontext){
-
-
- *或者getWritableDatabase()方法的时候,会创建数据库
- *此方法中的四个参数分别代表:
- *context:上下文对象
- *name:数据库的名称
- *CursorFactory:游标工厂,为null的时候,表示使用android系统默认的游标工厂
- *version:代表版本
- */
- super(context,"andy.db",null,2);
- }
-
- *这个方法是当数据库创建之后,就会立即调用,
- *所以一般在这个方法中,会实现创建数据库的表
- */
- @Override
- voidonCreate(SQLiteDatabasedb){
- db.execSQL("createtableperson(idintegerprimarykeyautoincrement,namevarchar(20),ageinteger)");
- }
- /*
- *这个方法是在当数据库中的对应的数据库的版本发生变化的时候会被立即调用
- *即是如果当已经存在数据库的时候,当构造方法中的第四个参数比数据库原先的版本号大的时候,会被调用
- *所以可以在这个方法中处理一些,像向数据库中的表中添加一个参数
- voidonUpgrade(SQLiteDatabasedb,153); background-color:inherit; font-weight:bold">intoldVersion,153); background-color:inherit; font-weight:bold">intnewVersion){
- db.execSQL("altertablepersonaddphonevarchar(12)null");
- }
之后,对数据库进行操作:
?
classPersonService{
- privateDbOpenHelperhelper;
- publicPersonService(Contextcontext){
- helper=newDbOpenHelper(context);
- //向数据库中增加数据
- voidaddData(Personperson){
- SQLiteDatabasedb=helper.getWritableDatabase();
- db.execSQL("insertintoperson(name,age,phone)values(?,?,?)",
- newObject[]{person.getName(),person.getAge(),person.getPhone()});
- //从数据库中删除数据
- voiddeleteData(Integerid){
- SQLiteDatabasedb=helper.getWritableDatabase();
- db.execSQL("deletefrompersonwhereid=?",153); background-color:inherit; font-weight:bold">newObject[]{id});
- //往数据库中更新数据
- voidupdateData(Personperson){
- db.execSQL("updatepersonsetname=?,age=?,phone=?whereid=?",
- //查找数据库中的数据
- publicPersoncheckData(Integerid){
- SQLiteDatabasedb=helper.getReadableDatabase();
- Cursorcursor=db.rawQuery("select*frompersonwhereid=?",153); background-color:inherit; font-weight:bold">newString[]{id.toString()});
- if(cursor.moveToFirst()){
- intpersonid=cursor.getInt(cursor.getColumnIndex("id"));
- Stringname=cursor.getString(cursor.getColumnIndex("name"));
- Stringphone=cursor.getString(cursor.getColumnIndex("phone"));
- shortage=cursor.getShort(cursor.getColumnIndex("age"));
- if(cursor!=null)
- cursor.close();
- returnnewPerson(personid,name,phone,age);
- null;
- //查找数据库中的person表中的数据的数目
- intgetCount(){
- SQLiteDatabasedb=helper.getReadableDatabase();
- Cursorcursor=db.rawQuery("selectcount(*)fromperson",153); background-color:inherit; font-weight:bold">null);
- cursor.moveToFirst();
- intcount=cursor.getInt(0);
- returncount;
- *分页,就是取出数据库中跳过offset条数据的maxCount条数据,
- *offset代表跳过的数据的条数,如3,表示跳过3条,从第四条开始取数据
- *maxCount代表要取出的数据的条数
- publicList<Person>getScrollData(intoffset,153); background-color:inherit; font-weight:bold">intmaxCount){
- List<Person>persons=newArrayList<Person>();
- Cursorcursor=db.rawQuery("select*frompersonlimit?,?",153); background-color:inherit; font-weight:bold">newString[]{String.valueOf(offset),String.valueOf(maxCount)});
- while(cursor.moveToNext()){
- intpersonid=cursor.getInt(cursor.getColumnIndex("id"));
- Stringname=cursor.getString(cursor.getColumnIndex("name"));
- Stringphone=cursor.getString(cursor.getColumnIndex("phone"));
- shortage=cursor.getShort(cursor.getColumnIndex("age"));
- persons.add(null){
- returnpersons;
- }
之后,通过单元测试来测试所编写的数据库代码:
?
classDbOpenHelperTestextendsAndroidTestCase{
- privatefinalstaticStringTAG="DbOpenHelperTest";
- voidtestCreateDatabase()throwsThrowable{
- DbOpenHelperhelper=newDbOpenHelper(this.getContext());
- helper.getWritableDatabase();
- voidtestAddData()throwsThrowable{
- PersonServiceservice=newPersonService(this.getContext());
- Personperson=newPerson();
- person.setName("hanmeimei");
- person.setAge((short)12);
- person.setPhone("12738487675");
- service.addData(person);
- person.setName("lilei");
- person.setAge((15);
- person.setPhone("1273834275");
- service.addData(person);
- person.setName("mingming");
- 34);
- person.setPhone("12737857675");
- person.setName("lile");
- 32);
- person.setPhone("12783947675");
- person.setName("mashan");
- 22);
- person.setPhone("12709847675");
- voidtestDeleteData() service.deleteData(1);
- voidtestUpdateData() PersonServiceservice= Personperson=service.checkData(3);
- person.setName("linsan");
- service.updateData(person);
- voidtestCheckData() Personperson=service.checkData(3);
- Log.d(TAG,person.toString());
- voidtestGetCount()intcount=service.getCount();
- "count="+count);
- voidtestGetScrollData() List<Person>persons=service.getScrollData(0,0); background-color:inherit">5);
- for(Personperson:persons){
- Log.d(TAG,person.toString());
- }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|