3.Android开发指南—数据存储

Android系统提供了4种机制来保存和获取数据,系统偏好(Shared Preferences)、文件(Files)、SQLite数据库(Database)、网络(Network)

1.系统偏好:快速,轻量级的存储。是一个用来存放和提取元数据类型键-值对的轻量级机制。

      代码:  SharedPreferences pres = MainActivity.this.getSharedPreferences("kuka", Context.MODE_PRIVATE);

                 /*存储数据*/
                 Editor editor = pres.edit();
          editor.putString("name", editName.getText().toString());
          editor.putInt("age", Integer.valueOf(editAge.getText().toString()));
          editor.commit();
          /*获取数据*/
          String name = pres.getString("name", "NO");
          int age = pres.getInt("age", 0);
          String bir = pres.getString("bir", "NO");
          txtResult.setText("Name="+name+";age="+age+";bir="+bir);

2.文件:存储到设备内部或可移动内存。从文件中读取数据,可调用Context.openFileInput()方法并传递本地文件名和文件路径给它,该方法返回一个标准的

           FileInputStream对象;向文件写数据时,可调用Context.openFileOutput()并传递文件名和路径,也返回FileOutputStream对象。

       代码: /* 向文件写数据*/

                OutputStream outStream = MainActivity.this.openFileOutput(fileName,Context.MODE_APPEND);   

                /*向文件读数据*/

                InputStream inStream = MainActivity.this.openFileInput(fileName);
3.数据库:任意的结构化存储。Android API包含了对创建和使用SQLite数据库的支持。每个数据库都是创建它的应用程序所私有的。

     SQLiteDatabase类提供一些方法操作数据库。这个类的对象可以通过继承了SQLiteOpenHelper类的类来得到。

       代码:   

                  public class DBOpenHelper extends SQLiteOpenHelper {
         private static final int VERSION = 1;
         private static final String DBNAME = "data.db";
         public DBOpenHelper(Context context){
            super(context, DBNAME, null, VERSION);
         }

         @Override
         public void onCreate(SQLiteDatabase db)//创建表{
            db.execSQL("create table t_student (sid integer primary key,name varchar(20),age integer)");
         } 

                       @Override
         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){

         。。。。。。} }

   ---------------------------------------------------------------------------------------------------------------------------          

         DBOpenHelper helper=new DBOpenHelper(Context context);
         SQLiteDatabase db=helper.getWritableDatabase();

    第一种用法:1)db.execSQL("insert into t_student (sid,name,age) values (?,?,?)", new Object[]{ student.getSid(), student.getName

                                                      (), student.getAge() });//添加学生
        2)db.execSQL("update t_student set name = ?,age = ? where sid = ?", new Object[]
                { student.getName(), student.getAge(), student.getSid() });//更新
        3)Cursor cursor = db.rawQuery("select sid,name,age from t_student where sid = ?", new String[]
                      { String.valueOf(sid) });//查询
            if (cursor.moveToNext()){
               return new Student(cursor.getInt(cursor.getColumnIndex("sid")), cursor.getString(cursor.getColumnIndex("name")),   

                                             cursor.getShort(cursor.getColumnIndex("age")));
            }
             4)db.execSQL("delete from t_student where sid in (" + sb + ")", (Object[]) sids);//删除
                      5)Cursor cursor = db.rawQuery("select * from t_student limit ?,?", new String[]{ String.valueOf(start), String.valueOf(count) });
                           //查询

                           while (cursor.moveToNext()){
                               students.add(new Student(cursor.getInt(cursor.getColumnIndex("sid")), cursor.getString(cursor.getColumnIndex

                             ("name")), cursor.getShort(cursor.getColumnIndex("age"))));
                           }

    第二种用法:1) ContentValues values=new ContentValues();values.put("sid", student.getSid());values.put("name", student.getName());
                          values.put("age", student.getAge());
                          db.insert("t_student", "sid", values);//添加

                     2) ContentValues values=new ContentValues();values.put("name", student.getName());values.put("age", student.getAge());
                          db.update("t_student", values, "sid = ?", new String[]{String.valueOf(student.getSid())});//更新

                     3)//db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy)
                         Cursor cursor = db.query("student", new String[]{"sid","name"}, "sid=?", new String[]{String.valueOf(sid)}, null, null, null);
                         new Student(cursor.getInt(0), cursor.getString(1), cursor.getShort(2));//查询

                    4)db.delete("t_student", "sid in ("+sb+")", strPid);StringBuffer sb = new StringBuffer();String[] strPid=new String[sids.length];

                    
   4.网络:支持基于网络的存储

posted on 2012-05-15 12:30  ssy黑桃a  阅读(192)  评论(0编辑  收藏  举报