加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

十一、SQLite数据库增删改查操作案例

发布时间:2020-12-12 20:19:49 所属栏目:百科 来源:网络整理
导读:Person实体类 package com.ljq.domain; public class Person { private Integer id; String name; String phone; Person() { super (); } Person(String name,String phone) { (); this .name = name; .phone phone; } Person(Integer id,String name,0)">.i

Person实体类

  
  
   
   package
   
    com.ljq.domain; 
   
   public
   
    
   
   class
   
    Person { 
   
   private
   
    Integer id; 
   
    String name; 
   
    String phone; 
   
    Person() { 
   
   super
   
   (); } 
   
    Person(String name,String phone) { 
   
   (); 
   
   this
   
   .name 
   
   =
   
    name; 
   
   .phone 
   
    phone; } 
   
    Person(Integer id,String name,0)">.id 
   
    id; 
   
    Integer getId() { 
   
   return
   
    id; } 
   
   void
   
    setId(Integer id) { 
   
    String getName() { 
   
    name; } 
   
    setName(String name) { 
   
    String getPhone() { 
   
    setPhone(String phone) { 
   
    phone; } }
  
  

DBOpenHelper数据库关联类

com.ljq.db; import android.content.Context; android.database.sqlite.SQLiteDatabase; android.database.sqlite.SQLiteOpenHelper; DBOpenHelper extends SQLiteOpenHelper { // 类没有实例化,是不能用作父类构造器的参数,必须声明为静态 static final String DBNAME " ljq.db ; int VERSION 1 第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类, 设置为null,代表使用系统默认的工厂类 DBOpenHelper(Context context) { (context,DBNAME,255)">null ,VERSION); } @Override onCreate(SQLiteDatabase db) { db.execSQL( CREATE TABLE PERSON (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME VARCHAR(20),PHONE VARCHAR(20)) ); } @Override onUpgrade(SQLiteDatabase db,0)"> oldVersion,0)"> newVersion) { 注:生产环境上不能做删除操作 db.execSQL( DROP TABLE IF EXISTS PERSON ); onCreate(db); } } PersonService业务类

java.util.ArrayList;
java.util.List; android.database.Cursor; com.ljq.domain.Person; PersonService { DBOpenHelper dbOpenHelper /** * 构造函数 * * 调用getWritableDatabase()或getReadableDatabase()方法后,会缓存SQLiteDatabase实例; * 因为这里是手机应用程序,一般只有一个用户访问数据库,所以建议不关闭数据库,保持连接状态。 * getWritableDatabase(),getReadableDatabase的区别是当数据库写满时,调用前者会报错,调用后者不会, * 所以如果不是更新数据库的话,最好调用后者来获得数据库连接。 * * 对于熟悉SQL语句的程序员最好使用exeSQL(),rawQuery(),因为比较直观明了 * * @param context */ PersonService(Context context){ dbOpenHelper new DBOpenHelper(context); } save(Person person){ dbOpenHelper.getWritableDatabase().execSQL( insert into person(name,phone) values (?,?) Object[]{person.getName(),person.getPhone()}); } update(Person person){ dbOpenHelper.getWritableDatabase().execSQL( update person set name=?,phone=? where id=? delete(Integer... ids){ if (ids.length > 0 ){ StringBuffer sb StringBuffer(); for (Integer id : ids){ sb.append( ? ).append( ); } sb.deleteCharAt(sb.length() - ); dbOpenHelper.getWritableDatabase().execSQL( delete from person where id in ( + sb ) Person find(Integer id){ Cursor cursor dbOpenHelper.getReadableDatabase().rawQuery( select id,name,phone from person where id=? String[]{String.valueOf(id)}); (cursor.moveToNext()){ personid cursor.getInt( ); String name cursor.getString( ); String phone 2 ); Person(personid,phone); } ; } long getCount(){ Cursor cursor dbOpenHelper.getReadableDatabase().query( person String[]{ count(*) },0)"> cursor.getLong( ); } * 分页 * * startResult 偏移量,默认从0开始 * maxResult 每页显示的条数 * @return List < Person getScrollData( startResult,0)"> maxResult){ List persons ArrayList Cursor cursor = dbOpenHelper.getReadableDatabase().query("person",new String[]{"id,phone"},0)"> "name like ?",new String[]{"%ljq%"},null,"id desc","1,2"); Cursor cursor select * from person limit ?,? String[]{String.valueOf(startResult),String.valueOf(maxResult)}); while (cursor.moveToNext()) { ); persons.add( persons; } } PersonServiceTest测试类

com.ljq.test;
com.ljq.db.PersonService; android.test.AndroidTestCase; android.util.Log; PersonServiceTest AndroidTestCase{ String TAG PersonServiceTest testSave() throws Exception{ PersonService personService PersonService( .getContext()); personService.save( Person( zhangsan1 059188893343 )); personService.save( zhangsan2 zhangsan3 zhangsan4 zhangsan5 )); } testUpdate() .getContext()); Person person personService.find( ); person.setName( linjiqin ); personService.update(person); } testFind() ); Log.i(TAG,person.getName()); } testList() .getContext()); List personService.getScrollData( 10 (Person person : persons){ Log.i(TAG,person.getId() : person.getName()); } } testCount() .getContext()); Log.i(TAG,String.valueOf(personService.getCount())); } testDelete() .getContext()); personService.delete( testDeleteMore() Integer[]{ 5 6 }); } } 运行结果

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读