sqlite实例

来源:互联网 发布:乌鲁木齐网络问政平台 编辑:程序博客网 时间:2024/06/05 03:56

 SQLite是Android平台软件开发中会经常用到的数据库产品,作为一款轻型数据库,SQLite的设计目标就是是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够。

          废话不多说,让我们来写一个sqlite的demo。

          首先建立一个项目 目录如下:

          

    在这里 为了便于测试,我用了junit测试,要想用junit测试,首先要在在AndroidManifest.xml中加入下面粗体部分的代码:

     

[html] view plain copy
  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     package="cn.com.karl.db"  
  3.     android:versionCode="1"  
  4.     android:versionName="1.0" >  
  5.   
  6.     <uses-sdk android:minSdkVersion="8" />  
  7.   
  8.     <application  
  9.         android:icon="@drawable/ic_launcher"  
  10.         android:label="@string/app_name" >  
  11.           
  12.         <span style="font-weight: bold;"> <uses-library android:name="android.test.runner" /></span>  
  13.           
  14.         <activity  
  15.             android:label="@string/app_name"  
  16.             android:name=".DbDemoActivity" >  
  17.             <intent-filter >  
  18.                 <action android:name="android.intent.action.MAIN" />  
  19.   
  20.                 <category android:name="android.intent.category.LAUNCHER" />  
  21.             </intent-filter>  
  22.         </activity>  
  23.     </application>  
  24.       
  25. <span style="font-weight: bold;"> <instrumentation android:name="android.test.InstrumentationTestRunner"  
  26.   android:targetPackage="cn.com.karl.db" android:label="Tests for My App" /></span>  
  27.           
  28. </manifest>  

    接下来在service包下建立DBOpenHandler类继承SQLiteOpenHelper

     

[java] view plain copy
  1. public class DBOpenHandler extends SQLiteOpenHelper {  
  2.   
  3.     public DBOpenHandler(Context context) {  
  4.         super(context, "person.db"null1);  
  5.           
  6.     }  
  7.   
  8.     @Override  
  9.     public void onCreate(SQLiteDatabase db) {  
  10.       db.execSQL("create table person(id integer primary key autoincrement,name varchar(20))");  
  11.   
  12.     }  
  13.   
  14.     @Override  
  15.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  16.         // TODO Auto-generated method stub  
  17.   
  18.     }  
  19.   
  20. }  

         然后编写我们的增删改查的核心类

       

[java] view plain copy
  1. public class PersonService {  
  2.   
  3.     private DBOpenHandler dbOpenHandler;  
  4.       
  5.     public PersonService(Context context){  
  6.         this.dbOpenHandler=new DBOpenHandler(context);  
  7.     }  
  8.     public void save(Person person){  
  9.         SQLiteDatabase db=dbOpenHandler.getWritableDatabase();  
  10.         db.execSQL("insert into person (name) values(?)"new Object[]{person.getName()});  
  11.     }  
  12.     public void delete(Integer id){  
  13.         SQLiteDatabase db=dbOpenHandler.getWritableDatabase();  
  14.         db.execSQL("delete from person where id="new Object[]{id.toString()});  
  15.   
  16.     }  
  17.      public void update(Person person){  
  18.             SQLiteDatabase db=dbOpenHandler.getWritableDatabase();  
  19.             db.execSQL("update person set name=? where" +  
  20.                     " id=?"new Object[]{person.getName(),person.getId()});  
  21.     }  
  22.      public Person find(Integer id){  
  23.          Person person=null;  
  24.          SQLiteDatabase db=dbOpenHandler.getReadableDatabase();  
  25.          Cursor cursor=db.rawQuery("select * from person where id=?"new String[]{id.toString()});  
  26.         if(cursor.moveToFirst()) {  
  27.             person=new Person();  
  28.             person.setId(cursor.getInt(cursor.getColumnIndex("id")));  
  29.             person.setName(cursor.getString(cursor.getColumnIndex("name")));  
  30.         }  
  31.          return person;  
  32.     }  
  33.      public List<Person> findAll(Integer offset,Integer maxLength){  
  34.          List<Person> lists=new ArrayList<Person>();  
  35.          Person person=null;  
  36.          SQLiteDatabase db=dbOpenHandler.getReadableDatabase();  
  37.          Cursor cursor=db.rawQuery("select * from person limit ?,?"new String[]{offset.toString(),maxLength.toString()});  
  38.          while(cursor.moveToNext()){  
  39.             person=new Person();  
  40.             person.setId(cursor.getInt(cursor.getColumnIndex("id")));  
  41.             person.setName(cursor.getString(cursor.getColumnIndex("name")));  
  42.             lists.add(person);  
  43.          }  
  44.          return lists;  
  45.      }  
  46.      public long getCount(){  
  47.          SQLiteDatabase db=dbOpenHandler.getReadableDatabase();  
  48.          Cursor cursor=db.rawQuery("select count(*) from person "null );  
  49.          cursor.moveToFirst();  
  50.          return cursor.getLong(0);  
  51.      }  
  52. }  
        在domain包下建立person类

     

[java] view plain copy
  1. public class Person {  
  2.   
  3.     private int id;  
  4.     private String name;  
  5.     public int getId() {  
  6.         return id;  
  7.     }  
  8.     public void setId(int id) {  
  9.         this.id = id;  
  10.     }  
  11.     public String getName() {  
  12.         return name;  
  13.     }  
  14.     public void setName(String name) {  
  15.         this.name = name;  
  16.     }  
  17.       
  18. }  
     最后是测试类:

    

[java] view plain copy
  1. public class DBOpenHandlerTest extends AndroidTestCase {  
  2.   
  3.     private static final String TAG = "DBOpenHandlerTest";  
  4.       
  5.     public void testCreate(){  
  6.         DBOpenHandler dbHandler=new DBOpenHandler(this.getContext());  
  7.         dbHandler.getWritableDatabase();  
  8.           
  9.     }  
  10.     public void testSave() throws Throwable{  
  11.         PersonService personService = new PersonService(this.getContext());  
  12.         Person person = new Person();  
  13.         person.setName("xiaoming");  
  14.         personService.save(person);  
  15.           
  16.         person = new Person();  
  17.         person.setName("xiaoli");  
  18.         personService.save(person);  
  19.           
  20.         person = new Person();  
  21.         person.setName("xiaowang");  
  22.         personService.save(person);  
  23.           
  24.         person = new Person();  
  25.         person.setName("xiaozhang");  
  26.         personService.save(person);  
  27.     }  
  28.       
  29.     public void testUpate() throws Throwable{  
  30.         PersonService personService = new PersonService(this.getContext());  
  31.         Person person = personService.find(1);    
  32.         person.setName("lili");  
  33.         personService.update(person);  
  34.     }  
  35.       
  36.     public void testDelete() throws Throwable{  
  37.         PersonService personService = new PersonService(this.getContext());  
  38.         personService.delete(1);  
  39.     }  
  40.       
  41.     public void testFind() throws Throwable{  
  42.         PersonService personService = new PersonService(this.getContext());  
  43.         Person person = personService.find(1);  
  44.         Log.i(TAG, person.getName());  
  45.     }  
  46.       
  47.     public void testFindAll() throws Throwable{  
  48.         PersonService personService = new PersonService(this.getContext());  
  49.         List<Person> persons = personService.findAll(03);  
  50.         for(Person person : persons){  
  51.             Log.i(TAG, person.getName());  
  52.         }  
  53.     }  
  54.       
  55.     public void testGetCount() throws Throwable{  
  56.         PersonService personService = new PersonService(this.getContext());  
  57.         Log.i(TAG, personService.getCount()+"");  
  58.     }  
  59. }  
      先测试testCreate方法 

      

        会在上面的包下创建一个数据库person

       然后测试    testSave方法 ,会在这张表中插入三条数据。

       最后测试  testFindAll方法  ,接着看一下logcat控制台打印的信息:

      

          OK! 已经打印出来了,其他测试不再复述。

0 0
原创粉丝点击