2014.10.13总结(数据存储)

来源:互联网 发布:ubuntu gnome3 编辑:程序博客网 时间:2024/06/06 01:27

数据存储分为三类,

1.文件存储

2.SharedPreference

3.数据库存储


一,文件存储

这种方式是将所有的数据原封不动的保存在文件中,不适合存储较为复杂的数据,忽略掉了


二,SharedPreference

这种是使用键值对的方式来存储数据,有三种方法获取到SharedPreference的实例对象

1.Context类的getSharedPreferences()方法

SharedPreferences pref=getSharedPreferences("data",MODE_PRIVATE);

第一个参数指定SharedPreferences文件的名称,第二个参数指定操作模式,MODE_PRIVATE意思是只要当前的应用程序才能进行读写,与直接传0的效果是一样的。MODE_MULTI_PROCESS用于多个程序之间对文件进行读写。

2.Activity类中的getPreferences()方法

3.PreferenceManager类的getDefaultSharedPreferences()方法。

pref=PreferenceManager.getDefaultSharedPreferences(this);
是一个静态方法,接收Context参数

 存储数据:

 得到SharedPreferences()对象后,向SharedPreferences文件中存储数据,分为三步

1.调用SharedPreferences对象的edit()方法来获取SharedPreferences.Editor对象。

2.向SharedPreferences.Editor对象中添加数据,如putString(),putBoolean()等方法,类推。

3.调用commit()方法提交数据。

SharedPreferences.Editor editor=getSharedPreferences("data",MODE_PRIVATE).edit;editor.putString("name",”Tom");editor.putInt("age”,24);editor.putBoolean("married",false);editor.commit();
读取数据:

与存取数据类似,调用getString()等方法即可,get方法接收两个参数,第一个是键,通过键即可找到值,第二个是默认值,表示找不到键所对应的值时,以什么样的默认值进行返回。

SharedPreferences pref=getSharedPreferences("data",MODE_PRIVATE);String name=pref.getString("name","");int age=pref.getInt("age",0);boolean married=pref.getBoolean("married",false);

SharedPreferences文件是使用XML格式来对数据进行管理,很多应用程序的偏好设置用的就是SharedPreferences技术。

三,SQLite数据库存储

1.创建数据库

SQLiteOpenHelper为抽象类,要使用的话只能创建自己的类来继承它,两个抽象方法onCreate()和onUpgrade()方法

构造器:有两个,一般使用参数少点那个,一共接收四个参数,第一个Context,第二个数据库名,第三个一般传入null,第四个是当前数据的版本号,用于数据库升级。

方法:在创建的类中重写onCreate()和onUpgrade()方法

SQLiteOpenHelper的实例方法:getReadableDatabase()和getWritableDatabase()方法,都可以打开一个现有的数据库(没有就创建),即当没有这个数据库时,调用onCreate()方法进行创建,当然onCreate()方法是要重写的。

2.升级数据库

重写onUpgrade()方法,可以在里面判断是否存在

db.execSQL("drop table if exists Book");db.execSQL("drop table if exists Category");onCreate(db);

然后修改SQLiteOpenHelper构造器的第四个参数,只要比之前大就可以了。

3.添加数据

SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put("name", "JAVA");values.put("author", "ALEX");values.put("pages", 123);values.put("price", 15.36);db.insert("Book", null, values);values.clear();

db.execSQL("insert into Book(name,author,pages,price) values(?,?,?,?)" , new String[]{"JAVA","ALEX","123","15.36"});
向数据库中插入数据时,首先要有ContentValues对象,并且ContentValues对象的key只能是String

4.删除数据

SQLiteDatabase db = dbHelper.getWritableDatabase();db.delete("Book", "pages>?", new String[] { "500" });

db.execSQL("delete from Book where page>?",new String[]{"500"});


5.更新数据

SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put("price", 12.35);

db.update("Book", values, "name=?", new String[] { "JAVA" });

6.终于到查询数据了

SQLiteDatabase有query()方法,需要传递的参数比较多

SQLiteDatabase db = dbHelper.getWritableDatabase();Cursor cursor = db.query("Book", null, null, null, null, null,null);if (cursor.moveToFirst()) {do {String name = cursor.getString(cursor.getColumnIndex("name"));String author = cursor.getString(cursor.getColumnIndex("author"));Log.d("MainActivity", "book's name is " + name);Log.d("MainActivity", "book's author is " + author);} while (cursor.moveToNext());}cursor.close();

db.query()方法返回一个Cursor,调用它的moveToFirst()方法,使指针移动到第一行,然后进行遍历,通过Cursor的getColumnIndex()方法获取对应位置的索引,通过toString()方法得到值。

db.rawQuery("select * from Book", null);


Cursor类主要用于保存查询返回的结果,有读写的功能。


可以看出,除了查询操作,别的都可以调用execSQL()方法,就和SQL语句是一样的。多加练习就熟悉了!
















0 0
原创粉丝点击