SQLite 是一款轻型的数据库,它的设计目标是嵌入式的,而且现在已经在很多嵌入式产品中使用了它,它占用资源非常的低,可能仅需要几百K,也就是说它适合任何系统,即使是嵌入式系统也可以管理大量的数据。
在Android开发中,如果你想把一些基本的数据结构,一些简单的参数,一些设置项,甚至一些中等大小的数据结构,持久化到手机端的存储器中,那么SQLite是一个很好的选择。特别是在多线程环境下,它提供了良好的一致性。
在使用SQLite存储token的时候,安全性需要得到保证。因为token代表了某种权限,如果不慎丢失可能会被恶意利用。因此在存储token时,可能还需要做一些加密处理。
在Android应用中你可以通过以下步骤存储token:
1.创建SQLite数据库和表
首先需要创建一个SQLiteHelper,继承SQLiteOpenHelper类,重写onCreate() 和 onUpgrade() 方法。在onCreate中创建需要的表和字段。
2.插入数据
通过getWritableDatabase得到一个SQLiteDatabase对象,然后调用insert方法,即可将数据插入数据库中。
3.修改数据
通过getWritableDatabase得到一个SQLiteDatabase对象,然后调用update方法,即可修改数据。
4.查询数据
通过getReadableDatabase得到一个SQLiteDatabase对象,然后调用query方法,得到Cursor对象,通过Cursor可以读取查询到的数据。
在使用的时候,你只需要生成一个SQLiteHelper对象,然后打开数据库,接着就可以做增删改查操作了。这就是一个完整的流程,非常简单。
示例代码:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME="tokens.db";//数据库名称
private static final int SCHEMA_VERSION=1;//版本号,则是升级之后的,升级方法请看onUpgrade方法里面的判断
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, SCHEMA_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE tokens (_id INTEGER PRIMARY KEY AUTOINCREMENT, token TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//此处暂时不实现数据库的升级,因为只有一个版本,数据库只需要创建一次,之后的使用都是直接利用这个数据库,不会调用onCreate方法重新创建数据库
}
public void insert(String token) {
ContentValues cv=new ContentValues();
cv.put("token",token);
getWritableDatabase().insert("tokens", "token", cv);
}
public void update(String id, String token) {
ContentValues cv=new ContentValues();
String[] args={id};
cv.put("token", token);
getWritableDatabase().update("tokens", cv, "_ID=?", args);
}
public void delete(String id) {
String[] args={id};
getWritableDatabase().delete("tokens", "_ID=?", args);
}
}
基于安全性考虑,永久性token在存储的时候都需要进行一定的加密处理,而且SQLite数据库文件本身也是可被读取的,因此如果可能的话,可以添加一些额外的安全措施,如对数据库文件进行加密等。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/169419.html