android数据存储

来源:互联网 发布:伟达公关 知乎 编辑:程序博客网 时间:2024/06/06 11:49
  在Android中一共提供4种数据存储方式,但是由于存储这些数据都是其应用程序私有的,所以如果需要在其他应用程序中使用这些数据,就要使用Android提供的Content Provider(数据共享)。Android中4种数据存储方式如下:

Shared Preferences:用来存储"key-value paires"格式数据,它是一个轻量级的键值存储机制,只可以存储基本数据类型。(主要是针对系统配置信息的保存,比如给程序界面设置了音效,想在下一次启动的时候还能够保留上次设置的音效)

Files:它通过FileInputStream和FileOutputStream对文件进行操作。但是在Android中,文件时一个应用程序私有的,一个应用程序无法读写其他应用程序的文件。(把需要保存的东西通过文件的形式记录下来,当需要这些数据时,通过读取这个文件来获得这些数据即可)

SQLite:Android提供的一个标准数据库,支持SQL语句。

Network:通过网络来存储和获得数据。

数据存储之Shared Preferences

 shared Preferences类似于我们常用的ini文件,用来保存应用程序的一些属性,在Android平台常用于存储较简单的参数设置。例如,可以通过它保存上一次用户所做的修改或者自定义参数设定,当再次启动程序后依然保持原有的设置。通过getPreferences()方法来获得Preferences对象,通过"SharedPreferences.Editor editor = uiState.edit();"取得编辑对象,然后通过"editor.put...()"方法添加数据,最后通过commit()方法保存这些数据,如果不需要与其他模块共享数据,可以使用Activity.getPreferences()方法保持数据私有。

数据存储之File

  用文件存储数据可以通过openFileOutput方法打开一个文件,通过load方法来获取文件的数据,通过deleteFile()方法可以删除一个指定文件。

数据储存之Network

  通过网络来获取和保存数据资源,这个方法需要设备保持网络连接状态,所有相对存在一些限制。

Android数据库编程

SQLite编程

  SQLite数据库的操作一般包括:创建数据库、打开数据库、创建表、向表中添加数据、从表中删除数据、修改表中的数据、关闭数据库、删除指定表、删除数据库和查询表中的某条数据。

1.创建和打开数据库

  在Android创建和打开一个数据库都可以使用openOrCreateDatabase方法来实现,它会自动去检测是否存在这个数据库,如果存在则打开,如果不存在创建一个数据库;创建成功则返回一个SQLiteDatabase对象,否则抛出异常FileNotFoundException。


/*创建一个名为"Example.db"的数据库,并返回一个SQLiteDatabase对象*/mSQLiteDatabase = this.openOrCreateDatabase("Example",MODE_PRIVATE,NULL);

2.创建表

  一个数据库可以包含多个表,每一条数据都保存在一个指定的表中,要创建表可以通过execSQL方法来执行一条SQL语句。execSQL能执行大部分的SQL语句

String <span style="font-family:SimSun;">SQL_CREATE_TABLE</span> = "CREATE TABLE mtable(_id INTERGER PRIMARY KEY, num INTERGER,data TEXT)";mSQLiteDatabase.execSQL(<span style="font-family:SimSun;">SQL_CREATE_TABLE</span>);

3.向表中添加一条数据

  使用execSQL方法来执行一条“插入”的SQL语句

String SQL_INSERT_DATA = "INSERT INTO mtable (_id,num,data) values (1,1,'插入SQL语句')";mSQLiteDatabase.execSQL(SQL_INSERT_DATA);

4.从表中删除数据

  要删除数据可以使用delete方法,删除字段"_id"等于1的数据,

mSQLiteDatabase.delete("Example.db","WHERE _id = 1",null);

  也可以通过execSQL方法执行SQL语句删除数据:

String DELETE_DATA = "DELETE FROM talbe1 WHERE  _id = 1";mSQLiteDatabase.execSQL(DELETE_DATA);

5.修改表中数据

  可以使用update方法来更新一条数据,下面来修改"num"值为0的数据,

ContentValues cv = new ContentValues();cv.put(TABLE_NUM,3);cv.put(TABLE_DATA,"修改后的数据");mSQLiteDatabase.update("table1",cv,"num"+"="+Integer.toString(0),null);

6.关闭数据库

直接使用SQLiteDatabase的close方法

mSQLiteDatabase.close();

7.删除指定表

mSQLiteDatabase.execSQL("DROP TABLE table1");

8.删除数据库

this.deleteDatabase("Example.db")

9.查询数据中的某条数据

在Android中查询数据时通过Cursor类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor指向的就是每一条数据。

Cursor类常用方法

close()

关闭游标,释放资源

copyStringToBuffer(int columnIndex, CharArrayBuffer buffer)

在缓冲区中检索请求的列的文本,将将其存储

getColumnCount()

返回所有列的总数

getColumnIndex(String columnName)

返回指定列的名称,如果不存在返回-1

getColumnIndexOrThrow(String columnName)

从零开始返回指定列名称,如果不存在将抛出IllegalArgumentException 异常。

getColumnName(int columnIndex)

从给定的索引返回列名

getColumnNames()

返回一个字符串数组的列名

getCount()

返回Cursor 中的行数

moveToFirst()

移动光标到第一行

moveToLast()

移动光标到最后一行

moveToNext()

移动光标到下一行

moveToPosition(int position)

移动光标到一个绝对的位置

moveToPrevious()

移动光标到上一行


0 0
原创粉丝点击