android 数据库处理及操作 博客分类: android android数据库sd卡
对于移动客户端来说,数据库肯定都是轻量级的,像sqlite ,今天做一个android下数据库操作的demo。
对于有数据库的应用,如果数据库包含在apk中,不进行处理的话,可能出现一种情况,随着数据记录的增加,应用会越来越大也就是说应用的大小是变化的。解决这个问题的方法是将数据库文件放到sd卡中。
1.在res目录下新建raw目录,将书库文件放到raw目录下
2.应用第一次使用时,将数据库文件写道sd卡中
(别忘了加
<!-- 操作sd卡权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
)
下面是代码片段:
public SQLiteDatabase openDatabase()
{
SQLiteDatabase database = null;
//得到 sdk状态
String sdState = android.os.Environment.getExternalStorageState();
//表示sd卡已经挂载,并且拥有读写权限
if(sdState.equals(android.os.Environment.MEDIA_MOUNTED))
{
boolean b = false;
File dir = new File(PATH);
//判断是否存在该目录 ,没有则创建
if(!dir.exists())
b = dir.mkdir();
//sd卡上不存在db文件则将apk中的db资源文件(raw文件下的db文件)保存在sd卡指定的目录下
String dbpath = PATH +"/"+DBNAME;
if(b&&!new File(dbpath).exists())
{
// //得到输入流
InputStream inputStream = activity.getResources().openRawResource(R.raw.testdb);
//创建输出流
try {
FileOutputStream fileOutputStream = new FileOutputStream(dbpath);
//将db文件写到sd卡
byte[] bs = new byte[8192];
int count = 0;
while(((count=inputStream.read(bs)))>0)
{
fileOutputStream.write(bs,0,count);
}
//关闭流
inputStream.close();
fileOutputStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//得到SqliteDatabase 对象
database = SQLiteDatabase.openOrCreateDatabase(dbpath, null);
}
return database;
}
得到了SqliteDatabase对象之后,增删改查 就是小菜一碟了
SqliteDatabase对象对于增,删,改有一个万能的execSQL()方法,也就是说增,删,改都可以用它
除此之外android还提供了非常方便的增删改查方法
查:
Cursor query(TABLE_NAME, null, null, null, null, null, null) ;
Cursor rawQuery(sql, selectionArgs)
(有很多重载根据自己需求选择)
eg:
public List<TestTable> selectAll() {
List<TestTable> list = null;
String sqlStr = "select id,name,sex from tb_test";
Cursor cursor = database.rawQuery(sqlStr, null);
if (cursor.getCount() > 0) {
list = new ArrayList<TestTable>();
while (cursor.moveToNext()) {
TestTable table = new TestTable();
table.setId(cursor.getInt(cursor.getColumnIndex("id")));
table.setName(cursor.getString(cursor.getColumnIndex("name")));
table.setSex(cursor.getString(cursor.getColumnIndex("sex")));
list.add(table);
}
}
return list;
}
增:
long insert(tableName, nullColumnHack, values)
eg:
public long insert(TestTable testTable) {
ContentValues values = new ContentValues();
values.put("name", testTable.getName());
values.put("sex", testTable.getSex());
return database.insert("tb_test", null, values);
}
改:
long database.update(tableName, values, whereClause, whereArgs)
eg:
public long update(TestTable testTable) {
ContentValues values = new ContentValues();
values.put("name", testTable.getName());
values.put("sex", testTable.getSex());
return database.update("tb_test", values, "id=?",
new String[] { String.valueOf(testTable.getId()) });
}
删:
long delete(tableName, whereClause, whereArgs)
eg:
public long delete(int id) {
return database.delete("tb_test", "id=?",
new String[] { String.valueOf(id) });
}
推荐阅读
-
android 数据库处理及操作 博客分类: android android数据库sd卡
-
android 对sqlite数据库的增删改查 博客分类: android sqlite
-
android sqlite数据库升级学习 博客分类: android相关 sqlite 数据库版本升级 sqliteandroidsql
-
android sqlite数据库升级学习 博客分类: android相关 sqlite 数据库版本升级 sqliteandroidsql
-
Android 数据库SQLite 写入SD卡的方法
-
Android 数据库SQLite 写入SD卡的方法
-
Android操作SQLite数据库(增、删、改、查、分页等)及ListView显示数据的方法详解
-
Android操作SQLite数据库(增、删、改、查、分页等)及ListView显示数据的方法详解
-
android 本地数据库 博客分类: android学习
-
android 本地数据库 博客分类: android学习