最近在项目中用到了安卓中的原生数据库,记录一下里面用到的东西:1.数据库创建 2.数据库插入
3.数据库批量删除数据 4.获取数据库总条数
1.创建数据库(直接上代码吧)
public class DBManager {
private static final String TAG = "DBManager";
private static DBManager instance;
public static final String TABLE_NAME = "upload";
//创建 students 表的 sql 语句, CREATE TABLE IF NOT EXISTS 是重点,这里如果数据库已经存在,
//则会直接打开,没有的话会创建
//id INTEGER PRIMARY KEY AUTOINCREMENT id为主键并自增长
private static final String CREATETABLE =
"CREATE TABLE IF NOT EXISTS " + TABLE_NAME +
"(id INTEGER PRIMARY KEY AUTOINCREMENT,content TEXT)";
public static DBManager getInstance() {
if (instance == null) {
synchronized (DBManager.class) {
if (instance == null) {
instance = new DBManager();
}
}
}
return instance;
}
//初始化数据库
public void initDB(Context context){
SQLiteDatabase db = context.openOrCreateDatabase("database.db",MODE_PRIVATE,null);
db.execSQL(CREATETABLE);
db.close();
}
}
2.向数据库插入数据
private void insert2DB(Context context,String jsonString){
SQLiteDatabase db = context.openOrCreateDatabase("database.db", MODE_PRIVATE, null);
ContentValues values = new ContentValues();
values.put("content", jsonString);
db.insert(TABLE_NAME, null, values);
db.close();
}
3.获取数据库总条数
/**
* 获取数据库upload表中数据总条数
* @return
*/
public long getDBCount(){
SQLiteDatabase db = STAdMob.getApplicationContext().openOrCreateDatabase("database.db",MODE_PRIVATE,null);
String sql = "select count(*) from upload";
Cursor cursor = db.rawQuery(sql, null);
cursor.moveToFirst();
long count = cursor.getLong(0);
cursor.close();
db.close();
return count;
}
4.批量删除数据
//根据主键id进行数据的批量删除,startId:起始的id endId:结束的id 即从startID开始删除,删除到endid
public void deleteDatabases(int startId,int endId){
SQLiteDatabase db = STAdMob.getApplicationContext().openOrCreateDatabase("database.db",MODE_PRIVATE,null);
db.execSQL("delete from " + TABLE_NAME + " where id" +
">=" + "'" + startId + "'" + " and id" + "<=" + "'" + endId +"'" );
db.close();
}
可以批量删除数据了,那么批量的数据id是怎么来的呢,换句话说,你可能知道第一次删除123条,第二次删除456条,运行一小时之后,怎么知道数据库的数据是从那一条开始的呢?
ps:数据库删除了id为1的数据后,id为2的数据会成为第一条数据
//从数据库最前面查询 num 条数据,这样,不仅可以知道数据的开始和结束,也可以看一下这一批删除的是那些数据
public ArrayList<String> getSelectId(int num) {
SQLiteDatabase db = STAdMob.getApplicationContext().openOrCreateDatabase("database.db",MODE_PRIVATE,null);
Cursor cursor = db.rawQuery("select * from upload limit " + num ,null);
ArrayList<String> list = new ArrayList<>();
if (cursor.moveToFirst()){
do {
String id = cursor.getString(cursor.getColumnIndex("id"));
list.add(id);
}while (cursor.moveToNext());
}
cursor.close();
db.close();
return list;
}
ok,就这些