`
zhanhao
  • 浏览: 286924 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 数据库处理及操作

阅读更多

对于移动客户端来说,数据库肯定都是轻量级的,像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数据库操作封装"主要是为了提高代码的可读性、可维护性和复用性,通过创建自定义的数据访问对象(DAO)层和数据库帮助类来实现。 1. 数据库Helper类: 在Android中,我们通常会创建一个继承自`...

    Android数据库ORM封装

    总结来说,Android数据库ORM封装使得数据库操作更加简便,通过Room框架,我们可以以声明式的方式定义数据库操作,同时保持代码的清晰和可维护性。`DataBaseDemo`项目则提供了具体的实现示例,有助于你在实际项目中...

    android数据库操作Demo

    本示例"android数据库操作Demo"提供了一个基础的教程,涵盖了数据库的基本操作,包括添加数据(增)、删除数据(删)、查询数据(查)和更新数据(改)。我们将深入探讨这些核心概念。 首先,Android使用SQLite作为...

    android数据库操作demo

    本"android数据库操作demo"主要展示了如何在Android应用中进行SQLite数据库的基本操作,包括增、删、改、查四大功能。下面我们将详细探讨这些知识点。 首先,要创建一个SQLite数据库,我们需要创建一个`...

    Android数据库SQLite详解

    本文将深入探讨SQLite在Android中的使用,包括基本概念、数据库操作以及实际应用示例。 ### 1. SQLite基本概念 - **数据库**: 数据库是存储和组织数据的结构化系统,SQLite在Android中表现为一个数据库文件,扩展...

    Android数据库基本操作源码

    在Android开发中,数据库是用于持久化数据的重要工具,SQLite是一个轻量级的、嵌入式的、关系型数据库,它是Android系统内置的默认数据库。本文将深入探讨Android中使用SQLite进行基本操作的源码解析。 首先,我们...

    Android数据库框架GreenDAO的基本操作

    在Android开发中,数据库管理是不可或缺的一部分,而GreenDAO作为一款高效的对象关系映射(ORM)框架,使得在Android上处理SQLite数据库变得异常简便。本文将深入探讨GreenDAO的基本操作,帮助开发者快速理解和掌握...

    Android数据库SQLite基本操作工程

    在这个"Android数据库SQLite基本操作工程"中,我们将深入探讨如何在Android应用中进行最基础的数据库操作:增、删、改、查。 1. **创建SQLite数据库** - 在Android中,我们通常通过继承`SQLiteOpenHelper`类来创建...

    android数据库应用实例

    综上所述,Android数据库应用实例主要涵盖了SQLite的使用、数据操作、数据库版本管理、性能优化等多个方面,通过实例代码MyDatabase,我们可以深入理解并掌握这些知识,为开发高效、可靠的Android应用程序奠定基础。

    你想要Android数据库操作精华(安全、并发、单例等)

    本Demo——"你想要的Android数据库操作精华(安全、并发、单例等)",旨在深入探讨如何在Android Studio环境下进行高效且安全的数据库操作,包括使用数据库框架、数据库加密、并发控制以及单例模式的应用。...

    Android读取Assert资源目录下数据库,数据库操作

    总之,在Android中从`assets`目录读取数据库涉及复制数据库文件、创建数据库帮助器、打开数据库并进行操作等步骤。通过这种方式,我们可以预先加载数据库,提供快速启动体验,或者在不联网的情况下使用预设的数据。...

    android 数据库操作封装类 继承可用

    在Android开发中,数据库操作是常见的任务之一,用于存储和检索应用程序的数据。为了简化这一过程,开发者通常会创建一个数据库帮助类(DataBaseHelper)来封装SQLite数据库的操作。在这个场景下,我们有一个名为`...

    Android数据库完美框架和示例

    在Android开发中,数据库是应用数据持久化的重要方式。Android提供了SQLite数据库系统...在`DemoDateBase`压缩包中,应该包含了这个框架的实现代码,你可以下载并参考其中的细节,进一步学习和实践Android数据库操作。

    Android 数据库操作

    在这个"Android 数据库操作"主题中,我们将深入探讨如何在Android应用中使用SQLite3进行数据库的创建、查询、插入、更新和删除等操作。 首先,让我们了解Android中的SQLite数据库的基本概念。每个Android应用都有一...

    android 数据库代码和资料

    本资源包提供了完整的Android数据库代码示例和详细的讲解资料,非常适合开发者深入学习和理解Android数据库的使用。 首先,我们来了解一下Android中主要使用的数据库系统——SQLite。SQLite是一个轻量级、嵌入式的...

    Android数据库示例源码

    这个“Android数据库示例源码”很可能是为了展示如何在Android平台上使用SQLite数据库进行数据操作。SQLite是一种轻量级、开源的SQL数据库,它嵌入到Android系统中,为每个应用程序提供独立的数据库。 首先,让我们...

    Android异步操作数据库

    因此,"Android异步操作数据库"是一个至关重要的知识点,它涉及到如何在后台线程中安全、高效地处理数据库事务,避免阻塞UI。 1. **AsyncTask** Android提供了一个内置的异步任务类`AsyncTask`,适用于短时间的...

    演示Android操作数据库例子

    在这个"演示Android操作数据库例子"中,我们将探讨如何使用Android的SQLite数据库以及DBHelper类来实现常见的数据库操作。 首先,Android中的SQLite数据库操作通常通过SQLiteOpenHelper这个辅助类进行。...

    android 数据库表结构更新步骤

    下面将详细讲解如何在Android中进行数据库表结构的更新,以及如何处理旧版本程序中表的接口添加、删减字段的问题。 1. **创建SQLite数据库** - Android使用SQLite作为默认的本地数据库系统。首先,我们需要创建一...

Global site tag (gtag.js) - Google Analytics