Android学习笔记1-1--数据2--SQL

来源:互联网 发布:易语言魔域登陆器源码 编辑:程序博客网 时间:2024/06/17 00:31

SharedPreferences

SharedPreferences是一种轻型的数据存储方式。其本质是基于XML文件形式存储key-value键值对数据。通常用来存储一些简单的配置信息,而且是标准的Boolean、Int、Float、Long、String等类型。其存储位置在/data/data/<包名>/shared_prefs目录下。

实现SharedPreferences存储的步骤如下:

1.获取SharedPreferences对象。
2.利用对象的edit()方法获取Editor对象。
3.通过Editor对象存储key-value键值对数据。
4.通过commit()/apply()方法提交数据。

有三种获取系统中保存的持久化数据的方式:

1.this.getPreferences (int mode)

通过Activity对象获取,获取的是本Activity私有的Preference,保存在系统中的xml形式的文件的名称为这个Activity的名字,因此一个Activity只能有一个,属于这个Activity。

2.this.getSharedPreferences (String name, int mode)

因为Activity继承了ContextWrapper,因此也是通过Activity对象获取,但是属于整个应用程序,可以有多个,以第一参数的name为文件名保存在系统中。

3.PreferenceManager.getDefaultSharedPreferences(this);

PreferenceManager的静态函数,保存PreferenceActivity中的设置,属于整个应用程序,但是只有一个,Android会根据包名和PreferenceActivity的布局文件来起一个名字保存。

mode值为Context.MODE_PRIVATE/WORLD_WRITEABLE/WORLD_READABLE。

SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便简洁。但是SharedPreferences也有其自身缺陷,如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。


SQLite

这里有SQLite简单学习地址,这里有SQLite详细学习地址以及SQLite剖析。

// sql基本语法为:// 增加insert into <表名> (key1,key2...) values (v1,v2...) // 删除delete <表名> where ...// 修改update <表名> set key1=v1,key2=v2... where ...// 查询select * form <表名> where ...

SQLiteOpenHelper

SQLiteOpenHelper是一个辅助类来管理数据库的创建和版本。可以通过继承这个类,实现它的一些方法来对数据库进行一些操作。所有继承了这个类的类都必须实现下面这样的一个构造方法:

DatabaseHelper(Context context, String name, CursorFactory factory, int version)// 第一个参数:Context类型,上下文对象// 第二个参数:String类型,数据库的名称// 第三个参数:CursorFactory类型// 第四个参数:int类型,数据库版本

下面是这个类的几个方法:

//创建或打开一个数据库。可以通过这两个方法返回的SQLiteDatabase对象对数据库进行一系列的操作getReadableDatabase()getWritableDatabase()// 在配置数据连接时会调用这个方法,确保预写日志或外键支持等功能可用onConfigure(SQLiteDatabase db)// 创建数据库onCreate(SQLiteDatabase db)// 升降级数据库onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion)// 打开数据库onOpen(SQLiteDatabase db)// 关闭所有打开的数据库对象close()

SQLiteDatabase

SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法。

// 打开或创建数据库openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)// 关闭数据库close()// 获取(设置)数据库的版本getVersion()setVersion(int version)// 插入一条记录insert(String table,String nullColumnHack,ContentValues values)// 删除一条记录delete(String table,String whereClause,String[]  whereArgs)// 修改记录update(String table,ContentValues values,String whereClause,String[] whereArgs)// 查询一条记录query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy)// 执行一条SQL语句execSQL(String sql, Object[] bindArgs)

Cursor

Cursor是每行的集合。你必须知道每一列的名称和每一列的数据类型。Cursor是一个随机的数据源,所有的数据都是通过下标取得。当我们使用 SQLiteDatabase.query系列方法时就会得到Cursor对象。

// SQLiteDatabase db = dbHelper.getWritableDatabase();// Cursor c = db.rawQuery("Select * from Book", null);c.close() // 关闭游标,释放资源c.getCount();       // 总数据项数  c.getPosition();    // 返回当前游标所指向的行数c.getColumnIndex(String columnName); // 返回某列名对应的列索引值,如果不存在返回-1c.getInt(int columnIndex);      // 返回当前行指定列的值c.getDouble(int columnIndex);   // 返回当前行指定列的值c.getString(int columnIndex);   // 返回当前行指定列的值c.moveToPosition(int position); // 移动到指定行c.move(int offset); // 以当前位置为参考,移动到指定行c.moveToFirst();    // 移动到第一行c.moveToLast();     // 移动到最后一行c.moveToPrevious(); // 移动到前一行c.moveToNext();     // 移动到下一行c.isFirst();        // 是否指向第一条c.isLast();         // 是否指向最后一条 c.isBeforeFirst();  // 是否指向第一条之前c.isAfterLast();    // 是否指向最后一条之后c.isNull(int columnIndex);  //指定列是否为空(列基数为0)c.isClosed();       // 游标是否已关闭

相关库

网上一般采用ORMLite,这里个人推荐一款国人开发的ORM框架LiteOrm。这里是他的官网,上面还有很多好东东奥,一般人我不告诉他^_^。自己也写了一个库,点这里进入,多多支持奥!