`
zhanhao
  • 浏览: 285475 次
  • 性别: 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数据库基本操作源码 包括创建数据库,创建表,对数据库的增,删,改,查操作

    android的数据库操作

    android的sqllite数据库操作,增删改查及事务处理

    delphi XE5 ANDROID平台 调用 webservice并访问操作MSSQL数据库

    Delphi XE5 Android 平台调用 Webservice 并访问操作 MSSQL 数据库 Delphi XE5 是一款功能强大且灵活的开发环境,为开发者提供了跨平台的开发体验。在 Android 平台上,Delphi XE5 提供了强大的支持,允许开发者...

    Android数据库实验.docx

    实验项目:Android数据库实验 一、实验目的 1、理解Android中常用的数据存储方式及各自特点; 2、掌握Sqlite数据库的相关操作; 3、掌握编程访问Sqlite数据库的方法; 二、实验原理 1、数据存储方式:...

    android学习资料DB数据库实例.pdf

    Android数据库提供了多种方式来实现CRUD操作,包括使用SQL语句和使用Cursor对象。在这个实例中,我们可以看到如何使用Cursor对象来实现CRUD操作。 知识点4:使用Cursor对象 Cursor对象是Android数据库中的一种数据...

    Android ListView控件显示数据库中图片

    Android ListView 控件显示数据库中...本文总结了 Android ListView 控件显示数据库中图片的过程,涉及到 SimpleAdapter、ViewBinder、数据库操作、ListView 控件的点击事件、图片的显示等知识点,希望对读者有所帮助。

    Android中显示数据库信息.pdf

    Android 中显示数据库信息 ...Android 中显示数据库信息需要了解 SQLite Database、创建数据库、数据库操作、显示数据库信息、数据绑定、事件处理、Android 项目结构和 Android 中的数据存储等知识点。

    Android实现对MSSQL数据库的增删改查操作

    首先,你需要在服务器端设置一个API接口,用于处理来自Android应用的请求。这里以Node.js为例,使用Express框架创建一个简单的API。 安装Express和body-parser: npm install express body-parser 创建一个简单的...

    Android创建和使用数据库详细指南.doc

    数据库支持每个应用程序无论大小的生命线,除非你的应用程序只处理简单的数据,那么就需要一个数据库系统存储你的结构化数据,Android使用SQLite数据库,它是一个开源的、支持多操作系统的SQL数据库,在许多领域广泛...

    基于sqlite实现一个Android数据库框架.zip

    Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件...

    基于Android的个人理财系统的设计与实现(源码+数据库+文档+截图).zip

    系统基于Android平台,采用Java语言开发,通过XML文档进行界面编程,并通过相应的Activity与后台Service实现指定功能,且实现了对数据的图形处理,数据存储与文件IO操作等功能。在网络应用上,主要使用基于HTTP协议...

    Android数据库安全解决方案,使用SQLCipher进行加解密

    我们都知道,Android系统内置了SQLite数据库,并且提供了一整套的API用于对数据库进行增删改查操作。数据库存储是我们经常会使用到的一种存储方式,相信大多数朋友对它的使用方法都已经比较熟悉了吧。在Android中,...

    AndroidSqlite数据库操作封装SQLiteUtils.zip

    一个简单的基于Android的Sqlite数据库的操作封装,它有如下的好处:便捷地创建表和增添表字段灵活的数据类型处理通过操作对象来insert或者update表记录支持多种查询方式,支持多表自定义的复杂查询,支持分页查询支持...

    DB数据库操作demo

    对网上的数据库操作demo进行了优化和bug处理

    Android数据库,学生选课系统.zip

    网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信是一个非常广泛的领域,它涉及到计算机科学、电子工程、数学等多个学科的知识。 云计算与大数据:数据集、包括云计算平台、大数据...

    androidlistview综合使用示例_结合数据库操作

    1.自定义listview条目样式,自定义listview显示列数的多少,灵活与数据库中字段绑定.2.实现对DB的增删改查,并且操作后listview...使用数据库处理框架AHibernate灵活操作sqlite数据库,详见: http://blog.csdn.net/lk_blo

    Android开发:使用sqlite数据库实现记单词APP

    通过该项目的设计,掌握Android项目设计开发流程,完成了一款记单词软件,UI布局界面使用了很多控件,使我掌握了TextView、EditText、Button、ratingBar、RadioGroup、radioButton、toggleButton、checkBox、spinner...

    Android+webservice操作数据库,实现xml和Json两种模式接收

    通过webservice为中介对数据库实现了增删查功能,例子中提供了两种模式数据处理,分别是webservice返回xml或者Json的处理。

Global site tag (gtag.js) - Google Analytics