android数据存储篇——SqliteDatabase

来源:互联网 发布:淘宝网拼多多 编辑:程序博客网 时间:2024/05/21 11:08

在安卓系统内部存在着sqlitedatabase数据库。可以将app的数据,比如账号信息。消息记录等,以数据库的形式保存在手机内存上。而保存的目录为系统根目录/data/data/包名/数据库名。

下面开始讲解其中的主要类怎么使用。

SQLiteOpenHelper:
SQLiteOpenHelper是SQLitedatabase的辅助类。用来初始化数据库连接。

SQLiteDatabase:
用来管理sqlite的一个类,主要包含了数据库的增删改查的方法。
:insert(String table,String nullColumHack,ContentValues values);

table 是表名
nullColumHack是一个字段名,为了防止values为空时插入空行,这是底层数据库不允许的,当values为空时,会插入为null的一条记录.
ContentValues 是一个类似map的映射类。以键值对的形式。

ContentValues values=new ContentValues();values.put("id", 2);//插入一条id为2的记录database.insert("mesager","id",values);

:delete(String table,String whereClause,String[] whereArgs);

table表名
whereClause带占位符的where语句。
whereArgs被占位符所代替的数组。

//删除mesager表字段id为1,2,5的记录database.delete("mesager","where id=?",new String[]{1,2,5});

:update(String table,ContentValue values,String whereClause,String[] whereArgs);

table 表名
values 键值对对象
whereClause带占位符的where语句。
whereArgs被占位符所代替的数组。

ContentValues values=new ContentValues();values.put("id", 2);//将mesager表id为5的记录id修改为2database.update("mesager",values,"where id=?",new String[]{5})

:query(String mesager,String[] columns,String selection,String selectionArgs,String groupBy,String having,String orderBy);

mesager表名
columns查询字段的数组,如果为null则查询所有字段
sekection带占位符的where语句。
selectionArgs被占位符所代替的数组。
groupBy 根据那个字段分组
having分组后的where语句
orderBy根据那个字段排序,默认升序。id desc根据id降序查询

database.query("mesager", null, null, null,                "sender", null, "id desc", "1");

实例:

MesagerDatabaseOpenHelp类:

package com.saver.database;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class MesagerDatabaseOpenHelp extends SQLiteOpenHelper {    public MesagerDatabaseOpenHelp(Context context, String name, int version) {        super(context, name, null, version);        // TODO Auto-generated constructor stub    }    @Override    public void onCreate(SQLiteDatabase arg0) {        // TODO Auto-generated method stub        **创建数据库**        String sql = "create table mesager("                + "id integer primary key autoincrement," + "sender varchar,"                + "body varchar," + "cdate varchar," + "isread varchar)";        arg0.execSQL(sql);    }    @Override    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {        // TODO Auto-generated method stub    }}

MesagerDatabase类:

package com.saver.database;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class MesagerDatabase {    private MesagerDatabaseOpenHelp help;    private SQLiteDatabase sqLiteDatabase;    public MesagerDatabase(Context context, String name) {        // TODO Auto-generated constructor stub        help = new MesagerDatabaseOpenHelp(context, name, 1);        ***创建数据库***        sqLiteDatabase = help.getReadableDatabase();    }    ***增***    public void addMesager(String from, String body) {        String sql = "insert into mesager(sender,body,cdate,isread) values(?,?,?,?)";        String date = String.valueOf(System.currentTimeMillis());        sqLiteDatabase.execSQL(sql, new String[] { from, body, date, "0" });    }    ***查***    public Cursor getAllLastMesager() {        Cursor query = sqLiteDatabase.query("mesager", null, null, null,                "sender", null, "id desc", "1");        return query;    }    ***改***    public void setMesagerRead(String arg) {        ContentValues contentValues = new ContentValues();        contentValues.put("isread", "1");        sqLiteDatabase.update("mesager", contentValues, "sender=?",                new String[] { arg });    }    ***删***    public void deleteMesager(String arg) {        sqLiteDatabase.delete("mesager", " sender=?", new String[] { arg });    }    ***查***    public Cursor selectMesager(String arg) {        Cursor query = sqLiteDatabase.query("mesager", null, "sender=?",                new String[] { arg }, null, null, "id");        return query;    }//关闭数据连接    public void close() {        sqLiteDatabase.close();        help.close();    }}
0 0