android对sqlite数据库操作(创建 增 删 改 查)
16lz
2021-01-26
android对sqlite数据库操作(创建 增 删 改 查)
操作sqlite数据库第一种方法execSql() rawQuery () 第二种方法:insert() delete() update() query()
创建sqlite数据库代码- /**
- *通过继承SqliteOpenHelper来创建一个数据库
- *@authorAdministrator
- *
- */
- publicclassDbOpenhelperextendsSQLiteOpenHelper
- {
- privatestaticStringDATABASENAME="secn.db";
- privatestaticintDATABASEVERSION=2;
- /**
- *(Contextcontext,Stringname,CursorFactoryfactory,intversion)
- *@paramcontext上下文对象
- *@paramname数据库名称secb.db
- *@paramfactory游标工厂
- *@paramversion数据库版本
- */
- publicDbOpenhelper(Contextcontext)
- {
- super(context,DATABASENAME,null,DATABASEVERSION);
- }
- /**数据库第一次被使用时创建数据库
- *@paramdb操作数据库的
- */
- publicvoidonCreate(SQLiteDatabasedb)
- {
- //执行有更新行为的sql语句
- db.execSQL("CREATETableperson(personidintegerprimarykeyautoincrement,namevarchar(20),amountinteger,ageinteger)");
- }
- /**数据库版本发生改变时才会被调用,数据库在升级时才会被调用;
- *@paramdb操作数据库
- *@paramoldVersion旧版本
- *@paramnewVersion新版本
- */
- publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)
- {
- db.execSQL("droptableifexistsperson");
- onCreate(db);
- }
- }
对数据库操作代码
- /**
- *对Person对象的sql操作(增删改查)
- *
- *@authorAdministrator
- *
- */
- publicclassPersonService
- {
- privateDbOpenhelperdbOpenHelper;
- publicPersonService(Contextcontext)
- {
- dbOpenHelper=newDbOpenhelper(context);
- }
- /**
- *添加Person
- *
- *@paramperson
- */
- publicvoidaddPerson(Personperson)
- {
- //对读和写操作的方法
- //如果当我们二次调用这个数据库方法,他们调用的是同一个数据库对象,在这里的方法创建的数据调用对象是用的同一个对象
- SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
- db.execSQL("insertintoPerson(name,amount)values(?,?)",newObject[]
- {person.getName(),person.getAmount()});
- }
- /**
- *修改Person
- *
- *@paramperson
- */
- publicvoidmodifyPerson(Personperson)
- {
- SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
- db.execSQL("updatePersonsetname=?wherepersonid=?",newObject[]
- {person.getName(),person.getId()});
- }
- /**
- *删除Person
- *
- *@paramperson
- */
- publicvoiddeletePerson(Integerid)
- {
- SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
- db.execSQL("deletefromPersonwherepersonid=?",newObject[]
- {id.toString()});
- }
- /**
- *根据person的Id查询Person对象
- *
- *@paramid
- *Person的ID
- *@returnPerson
- */
- publicPersonfindPerson(Integerid)
- {
- //只对读的操作的方法
- SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
- //Cursor游标的位置,默认是0,所有在操作时一定要先cursor.moveToFirst()一下,定位到第一条记录
- //Cursorcursor=
- //db.rawQuery("select*frompersonWherepersonid=?",new
- //String[]{id.toString()});
- Cursorcursor=db.query("Person",newString[]
- {"personid","name","amount"},"personid=?",newString[]
- {id.toString()},null,null,null);
- if(cursor.moveToFirst())
- {
- intpersonId=cursor.getInt(cursor.getColumnIndex("personid"));
- Stringname=cursor.getString(cursor.getColumnIndex("name"));
- intamount=cursor.getInt(cursor.getColumnIndex("amount"));
- returnnewPerson(personId,name,amount);
- }
- returnnull;
- }
- /**
- *返回Person对象的集合
- *
- *@returnList<Person>
- */
- publicList<Person>findPersonList(Integerstart,Integerlength)
- {
- List<Person>persons=newArrayList<Person>();
- //只对读的操作的方法
- SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
- Cursorcursor=db.rawQuery("select*fromPersonlimit?,?",
- newString[]
- {start.toString(),length.toString()});
- cursor=db.query("Person",null,null,null,null,null,null,start
- +","+length);
- while(cursor.moveToNext())
- {
- intpersonId=cursor.getInt(cursor.getColumnIndex("personid"));
- Stringname=cursor.getString(cursor.getColumnIndex("name"));
- intamount=cursor.getInt(cursor.getColumnIndex("amount"));
- persons.add(newPerson(personId,name,amount));
- }
- returnpersons;
- }
- /**
- *返回Person的记录总个数
- *
- *@return
- */
- publicLonggetCount()
- {
- SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
- Cursorcursor=db.rawQuery("selectcount(0)fromPerson",null);
- //这里必定有一条记录.所有不用判断,直接移到第一条.
- cursor.moveToFirst();
- //这里只有一个字段时候返回
- returncursor.getLong(0);
- }
- /**
- *操作一个事务
- *
- *@return
- */
- publicStringgetTransaction()
- {
- SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
- Stringsuccess="";
- db.beginTransaction();
- try
- {
- db.execSQL("updatepersonsetamount=amount+10wherepersonId=?",
- newObject[]
- {1});
- db.execSQL("updatepersonsetamount=amount-10wherepersonId=?",
- newObject[]
- {2});
- success="success";
- }catch(Exceptione)
- {
- success="input";
- }finally
- {
- //db.setTransactionSuccessful();//设置事务标志为成功,当结束事务时就会提交事务
- db.endTransaction();
- }
- returnsuccess;
- }
- }
客户端测试代码
- publicclassSqliteTestextendsAndroidTestCase
- {
- /**
- *创建数据库及新建表
- */
- publicvoidtestCreateSqllite()
- {
- DbOpenhelperdb=newDbOpenhelper(this.getContext());
- //第一次调用该方法会调用数据库
- db.getWritableDatabase();
- }
- /**
- *添加Person
- */
- publicvoidtestSavePerson()
- {
- PersonServicedb=newPersonService(this.getContext());
- Personperson=newPerson();
- person.setName("LiMing");
- person.setAmount(888);
- db.addPerson(person);
- }
- /**
- *更新Person
- */
- publicvoidtestUpdatePerson()
- {
- PersonServicedb=newPersonService(this.getContext());
- Personperson=newPerson();
- person.setId(1);
- person.setName("LiMingRen");
- person.setAmount(101);
- db.modifyPerson(person);
- }
- /**
- *删除Person
- */
- publicvoidtestDeletePerson()
- {
- PersonServicedb=newPersonService(this.getContext());
- db.deletePerson(1);
- }
- /**
- *查询一条Person记录
- */
- publicvoidtestPerson()
- {
- PersonServicedb=newPersonService(this.getContext());
- Personperson=db.findPerson(2);
- Log.i("SqliteTest",person.toString());
- }
- /**
- *查询Person集合对象
- */
- publicvoidtestPersonList()
- {
- PersonServicedb=newPersonService(this.getContext());
- List<Person>persons=db.findPersonList(0,5);
- for(Personparson:persons)
- {
- Log.i("SqliteTest",parson.toString());
- }
- }
- /**
- *测试一个事务
- */
- publicvoidtestgetTransaction(){
- PersonServicedb=newPersonService(this.getContext());
- Stringstr=db.getTransaction();
- Log.i("SqliteTest",str);
- }
- }
Person对象代码
- publicclassPerson
- {
- privateintid;
- privateStringname;
- privateintamount;
- publicPerson()
- {
- }
- publicPerson(intid,Stringname,intamount)
- {
- super();
- this.id=id;
- this.name=name;
- this.amount=amount;
- }
- publicintgetId()
- {
- returnid;
- }
- publicvoidsetId(intid)
- {
- this.id=id;
- }
- publicStringgetName()
- {
- returnname;
- }
- publicvoidsetName(Stringname)
- {
- this.name=name;
- }
- publicintgetAmount()
- {
- returnamount;
- }
- publicvoidsetAmount(intamount)
- {
- this.amount=amount;
- }
- publicStringtoString()
- {
- return"ID:"+id+"Name:"+name+"Amount:"+amount;
- }
- }
更多相关文章
- Android8.0源码解析——Activity的启动过程
- Android(安卓)对话框(三)自定义对话框
- Android(安卓)内存溢出问题分析
- 调用Android系统设置
- android 反编译操作
- Android与Js调用
- Opencv JNI Android(安卓)Camera 效率分析
- NDK(1)--体验NDK
- 关于Android(安卓)NDK如何成功调用stl的使用分析