对于移动客户端来说,数据库肯定都是轻量级的,像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数据库操作封装"主要是为了提高代码的可读性、可维护性和复用性,通过创建自定义的数据访问对象(DAO)层和数据库帮助类来实现。 1. 数据库Helper类: 在Android中,我们通常会创建一个继承自`...
总结来说,Android数据库ORM封装使得数据库操作更加简便,通过Room框架,我们可以以声明式的方式定义数据库操作,同时保持代码的清晰和可维护性。`DataBaseDemo`项目则提供了具体的实现示例,有助于你在实际项目中...
本示例"android数据库操作Demo"提供了一个基础的教程,涵盖了数据库的基本操作,包括添加数据(增)、删除数据(删)、查询数据(查)和更新数据(改)。我们将深入探讨这些核心概念。 首先,Android使用SQLite作为...
本"android数据库操作demo"主要展示了如何在Android应用中进行SQLite数据库的基本操作,包括增、删、改、查四大功能。下面我们将详细探讨这些知识点。 首先,要创建一个SQLite数据库,我们需要创建一个`...
本文将深入探讨SQLite在Android中的使用,包括基本概念、数据库操作以及实际应用示例。 ### 1. SQLite基本概念 - **数据库**: 数据库是存储和组织数据的结构化系统,SQLite在Android中表现为一个数据库文件,扩展...
在Android开发中,数据库是用于持久化数据的重要工具,SQLite是一个轻量级的、嵌入式的、关系型数据库,它是Android系统内置的默认数据库。本文将深入探讨Android中使用SQLite进行基本操作的源码解析。 首先,我们...
在Android开发中,数据库管理是不可或缺的一部分,而GreenDAO作为一款高效的对象关系映射(ORM)框架,使得在Android上处理SQLite数据库变得异常简便。本文将深入探讨GreenDAO的基本操作,帮助开发者快速理解和掌握...
在这个"Android数据库SQLite基本操作工程"中,我们将深入探讨如何在Android应用中进行最基础的数据库操作:增、删、改、查。 1. **创建SQLite数据库** - 在Android中,我们通常通过继承`SQLiteOpenHelper`类来创建...
综上所述,Android数据库应用实例主要涵盖了SQLite的使用、数据操作、数据库版本管理、性能优化等多个方面,通过实例代码MyDatabase,我们可以深入理解并掌握这些知识,为开发高效、可靠的Android应用程序奠定基础。
本Demo——"你想要的Android数据库操作精华(安全、并发、单例等)",旨在深入探讨如何在Android Studio环境下进行高效且安全的数据库操作,包括使用数据库框架、数据库加密、并发控制以及单例模式的应用。...
总之,在Android中从`assets`目录读取数据库涉及复制数据库文件、创建数据库帮助器、打开数据库并进行操作等步骤。通过这种方式,我们可以预先加载数据库,提供快速启动体验,或者在不联网的情况下使用预设的数据。...
在Android开发中,数据库操作是常见的任务之一,用于存储和检索应用程序的数据。为了简化这一过程,开发者通常会创建一个数据库帮助类(DataBaseHelper)来封装SQLite数据库的操作。在这个场景下,我们有一个名为`...
在Android开发中,数据库是应用数据持久化的重要方式。Android提供了SQLite数据库系统...在`DemoDateBase`压缩包中,应该包含了这个框架的实现代码,你可以下载并参考其中的细节,进一步学习和实践Android数据库操作。
在这个"Android 数据库操作"主题中,我们将深入探讨如何在Android应用中使用SQLite3进行数据库的创建、查询、插入、更新和删除等操作。 首先,让我们了解Android中的SQLite数据库的基本概念。每个Android应用都有一...
本资源包提供了完整的Android数据库代码示例和详细的讲解资料,非常适合开发者深入学习和理解Android数据库的使用。 首先,我们来了解一下Android中主要使用的数据库系统——SQLite。SQLite是一个轻量级、嵌入式的...
这个“Android数据库示例源码”很可能是为了展示如何在Android平台上使用SQLite数据库进行数据操作。SQLite是一种轻量级、开源的SQL数据库,它嵌入到Android系统中,为每个应用程序提供独立的数据库。 首先,让我们...
因此,"Android异步操作数据库"是一个至关重要的知识点,它涉及到如何在后台线程中安全、高效地处理数据库事务,避免阻塞UI。 1. **AsyncTask** Android提供了一个内置的异步任务类`AsyncTask`,适用于短时间的...
在这个"演示Android操作数据库例子"中,我们将探讨如何使用Android的SQLite数据库以及DBHelper类来实现常见的数据库操作。 首先,Android中的SQLite数据库操作通常通过SQLiteOpenHelper这个辅助类进行。...
下面将详细讲解如何在Android中进行数据库表结构的更新,以及如何处理旧版本程序中表的接口添加、删减字段的问题。 1. **创建SQLite数据库** - Android使用SQLite作为默认的本地数据库系统。首先,我们需要创建一...