android 数据库操作

From : http://daixj110.javaeye.com/blog/890532

 

另一篇:http://database.51cto.com/art/200903/113334.htm

 

 

Databasehelper代码  
  1. public class DatabaseHelper extends SQLiteOpenHelper {  
  2.   
  3.     private final static String NAME="sharp.db" ;  
  4.     //Factory:代表记录集游标工厂,是专门用来生成记录集游标,记录集游标是对查询结果进行迭代的,后面我们会继续介绍。  
  5.     public DatabaseHelper(Context context, String name, CursorFactory factory,  
  6.             int version) {  
  7.         super(context, name, factory, version);  
  8.         // TODO Auto-generated constructor stub  
  9.     }  
  10.     public DatabaseHelper(Context context){  
  11.         super(context, NAME, null, 1 );  
  12.     }  
  13.   
  14.     /**  
  15.      * 用户第一次使用软件时调用,实现数据库的操作crud  
  16.      */  
  17.     @Override  
  18.     public void onCreate(SQLiteDatabase db) {  
  19.         // TODO Auto-generated method stub  
  20.         Log.i("save" "create" );  
  21.         db.execSQL("create table person(personid integer primary key autoincrement,name varcahr(20),age integer)" );  
  22.     }  
  23.   
  24.     @Override  
  25.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  26.         // TODO Auto-generated method stub  
  27.         db.execSQL("drop table if exists person" );  
  28.         onCreate(db);  
  29.     }  
  30.     /**  
  31.      * 根据版本号进行更新  
  32.      * @param db  
  33.      * @param mNewVersion  
  34.      */  
  35.     public void checkVersionCreate(SQLiteDatabase db,int mNewVersion){  
  36.         int version = db.getVersion();  
  37.         if (version != mNewVersion) {  
  38.         db.beginTransaction();  
  39.         try {  
  40.         if (version == 0 ) {  
  41.         onCreate(db);  
  42.         }else{  
  43.         onUpgrade(db, version,mNewVersion);  
  44.         }  
  45.         db.setVersion(mNewVersion); //设置为新的版本号  
  46.         db.setTransactionSuccessful();  
  47.         }  
  48.         finally{  
  49.         db.endTransaction();  
  50.         }  
  51.         }  
  52.     }  
  53.     /**  
  54.      * 数据库名不空,获得数据库实例  
  55.      * @param mDatabase  
  56.      * @param mContext  
  57.      * @param mName  
  58.      * @param mFactory  
  59.      * @return  
  60.      */  
  61.     public SQLiteDatabase getDatabase(SQLiteDatabase mDatabase,Context mContext,String mName,CursorFactory mFactory){  
  62.             if (mDatabase != null && mDatabase.isOpen() && !mDatabase.isReadOnly()) {  
  63.                 return mDatabase; // The database is already open for business  
  64.                 }  
  65.             if (mName == null) {  
  66.                 mDatabase = SQLiteDatabase.create(null);  
  67.                 } else {  
  68.                     mDatabase = mContext.openOrCreateDatabase(mName, 0 , mFactory);  
  69.                 }  
  70.             return mDatabase;  
  71.         }  
  72. }  

 

DbService:

Java代码  
  1. public   class  DbService {  
  2.     private  DatabaseHelper databaseHelper;  
  3.     private  Context context;  
  4.     public  DbService(Context context){  
  5.         this .context=context;  
  6.         databaseHelper=new  DatabaseHelper( this .context);  
  7.     }  
  8.     //保存   
  9.     public   void  save(Person person){  
  10.         SQLiteDatabase db = databaseHelper.getWritableDatabase();  
  11.         db.execSQL("insert into person(name, age) values(?,?)" , new  Object[]{person.getName(), person.getAge()});  
  12.         }  
  13.     //更新   
  14.     public   void  update(Person person){  
  15.         SQLiteDatabase db = databaseHelper.getWritableDatabase();  
  16.         db.execSQL("update person set name=?,age=? where personid=?" ,  
  17.         new  Object[]{person.getName(), person.getAge(),  
  18.         person.getId()});  
  19.         }  
  20.     //根据id查找   
  21.     public  Person find(Integer id){  
  22.         SQLiteDatabase db = databaseHelper.getReadableDatabase();  
  23.         Cursor cursor = db.rawQuery("select personid,name,age from person where personid=?" new  String[]{String.valueOf(id)});  
  24.         if (cursor.moveToNext()){  //迭代记录集   
  25.         Person person = new  Person(); //实例化person   
  26.         person.setId(cursor.getInt(cursor.getColumnIndex("personid" )));  
  27.         person.setName(cursor.getString(1 ));  
  28.         person.setAge(cursor.getInt(2 ));  //将查到的字段,放入person,   
  29.         return  person;  
  30.         }  
  31.         cursor.close();//游标关闭   
  32.         return   null ;  
  33.         }  
  34.     //删除   
  35.     public   void  delete(Integer id){  
  36.         SQLiteDatabase db=databaseHelper.getWritableDatabase();  
  37.         db.execSQL("delete from person where id=?" , new  Object[]{id});  
  38.     }  
  39.     //   
  40.     public  List<Person> getScrollData( int  firstResult,  int  maxResult){  
  41.         List<Person> persons = new  ArrayList<Person>();  
  42.         SQLiteDatabase db = databaseHelper.getReadableDatabase();  
  43.         Cursor cursor = db.rawQuery("select personid,name,age from person limit ?,?" ,  
  44.         new  String[]{String.valueOf(firstResult),String.valueOf(maxResult)});  //firstResult开始索引   
  45.         while (cursor.moveToNext()){  //maxResult每页获取的记录数   
  46.         Person person = new  Person();  
  47.         person.setId(cursor.getInt(cursor.getColumnIndex("personid" )));  
  48.         person.setName(cursor.getString(1 ));  
  49.         person.setAge(cursor.getInt(2 ));  
  50.         persons.add(person);  
  51.         }  
  52.         cursor.close();  
  53.         return  persons;  
  54.         }  
  55.     //   
  56.     public   long  getCount(){  
  57.         SQLiteDatabase db = databaseHelper.getReadableDatabase();  
  58.         Cursor cursor = db.rawQuery("select count(*) from person" null );  
  59.         //没有占位符参数的话,直接用null   
  60.         cursor.moveToFirst();  
  61.         long  count = cursor.getLong( 0 );  
  62.         cursor.close();  
  63.         return  count;  
  64.         }  
  65.     //   
  66.     public   void  close(){  
  67.         databaseHelper.close();  
  68.         }  
  69. }         

 

Person:

Java代码  
  1. public   class  Person {  
  2.     private  Integer id;  
  3.     private  String name;  
  4.     private  Integer age;  
  5.     public  Person(){}  
  6.     public  Person(String name,Integer age){  
  7.         this .name=name;  
  8.         this .age=age;  
  9.     }  
  10.     public  Integer getId() {  
  11.         return  id;  
  12.     }  
  13.     public   void  setId(Integer id) {  
  14.         this .id = id;  
  15.     }  
  16.     public  String getName() {  
  17.         return  name;  
  18.     }  
  19.     public   void  setName(String name) {  
  20.         this .name = name;  
  21.     }  
  22.     public  Integer getAge() {  
  23.         return  age;  
  24.     }  
  25.     public   void  setAge(Integer age) {  
  26.         this .age = age;  
  27.     }  
  28.     @Override   
  29.     public  String toString() {  
  30.     return   "Person [age="  + age +  ", id="  + id +  ", name="  + name +  "]" ;  
  31.     }  
  32. }  

 

PersonServiceTest:

Java代码  
  1. public   class  PersonServiceTest  extends  AndroidTestCase{  
  2.     public   void  testSave()  throws  Throwable{  //测试保存方法   
  3.         DbService personService = new  DbService( this .getContext());  
  4.         //传入上下文   
  5.         Person person = new  Person( "Tom" 21 );  
  6.         personService.save(person);  
  7.         }  
  8. }  

 

一个activity:

 

Java代码  
  1. public   class  SqlLiteActivity  extends  Activity {  
  2.     /** Called when the activity is first created. */   
  3.     private   final   static  String TAG= "PersonActivity" ;  
  4.     private  ListView listView;  
  5.     private  DbService personService;  
  6.     @Override   
  7.     public   void  onCreate(Bundle savedInstanceState) {  
  8.         super .onCreate(savedInstanceState);  
  9.         setContentView(R.layout.main);  
  10.         listView = (ListView)findViewById(R.id.personList);  
  11.         personService = new  DbService( this );  
  12.         save(personService);  
  13.         List<Person> persons = personService.getScrollData(0 3 ); //前十条数据   
  14.         List<HashMap<String, String>> data = new   
  15.         ArrayList<HashMap<String,String>>();  
  16.         HashMap<String, String>title = new  HashMap<String, String>();  
  17.         title.put("personid" , "编号" );  
  18.         title.put("name" "姓名" );  
  19.         title.put("age" "年龄" );  
  20.         data.add(title); //标题   
  21.         for (Person person : persons){  
  22.             HashMap<String, String> map = new  HashMap<String, String>();  
  23.             map.put("personid" , String.valueOf(person.getId()));  
  24.             map.put("name" , person.getName());  
  25.             map.put("age" , String.valueOf(person.getAge()));  
  26.             data.add(map); //显示各个数据   
  27.         }   
  28.         SimpleAdapter adapter = new  SimpleAdapter(SqlLiteActivity. this ,  
  29.                 data, R.layout.personitem, new  String[]{ "personid" "name" , "age" },  
  30.                 new   int []{R.id.personid, R.id.name, R.id.age});  
  31.         listView.setAdapter(adapter);  
  32.     }  
  33.       
  34.     //   
  35.     public   void  save(DbService service){  
  36.         for ( int  i= 0 ;i< 5 ;i++){  
  37.         Person person=new  Person();  
  38.         person.setName("d" );  
  39.         person.setAge(12 );  
  40.         service.save(person);  
  41.         }  
  42.     }  
  43. }  

 main.xml<?xml version="1.0" encoding="utf-8"?>

Java代码  
  1. <LinearLayout  
  2. xmlns:android="http://schemas.android.com/apk/res/android"   
  3. android:orientation="vertical"   
  4. android:layout_width="fill_parent"   
  5. android:layout_height="fill_parent"   
  6. >  
  7. <ListView  
  8. android:id="@+id/personList"   
  9. android:layout_width="fill_parent"   
  10. android:layout_height="wrap_content"   
  11. ></ListView>  
  12. </LinearLayout>  

 personitem.xml<?xml version="1.0" encoding="utf-8"?>

Java代码  
  1. <RelativeLayout  
  2.     xmlns:android="http://schemas.android.com/apk/res/android"   
  3.     android:layout_width="fill_parent"   
  4.     android:layout_height="wrap_content" >  
  5.     <TextView  
  6.         android:layout_width="60px"   
  7.         android:layout_height="wrap_content"   
  8.         android:id="@+id/personid"   
  9.     />  
  10.       
  11.     <TextView  
  12.        android:layout_width="160px"   
  13.        android:layout_height="wrap_content"   
  14.        android:layout_toRightOf="@id/personid"   
  15.        android:layout_alignTop="@id/personid"   
  16.        android:gravity="center_horizontal"   
  17.        android:id="@+id/name"   
  18.       />  
  19.       
  20.     <TextView  
  21.     android:layout_width="wrap_content"   
  22.     android:layout_height="wrap_content"   
  23.     android:layout_toRightOf="@id/name"   
  24.     android:layout_alignTop="@id/name"   
  25.     android:id="@+id/age"   
  26.     />  
  27.        
  28. </RelativeLayout>  
 

你可能感兴趣的:(android,数据库,String,ListView,layout,Integer)