在安卓系统内部存在着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修改为2
database.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();
}
}