- 浏览: 126431 次
文章分类
最新评论
-
qzwlf:
Android(四)数据存储之五网络 -
jiaoshiyao:
...
http响应头介绍 -
cherishlive:
请问Standard MBean如何支持复杂类型,可否大概的讲 ...
JMX MBeans之三Open MBean -
nihongye:
...
JMX MBeans之三Open MBean -
discolt:
报错
javax.management.MBeanExcep ...
JMX MBeans之四Model MBean (1)
4.编写ContactsService类
ContactsService类主要实现对业务逻辑和数据库的操作。
package com.changcheng.sqlite.service;
import java.util.ArrayList; import java.util.List; import android.content.Context; import android.database.Cursor; import com.changcheng.sqlite.MyOpenHelper; import com.changcheng.sqlite.entity.Contact;
public class ContactsService {
private MyOpenHelper openHelper;
public ContactsService(Context context) { this.openHelper = new MyOpenHelper(context); }
/** * 保存 * * @param contact */ public void save(Contact contact) { String sql = "INSERT INTO contacts (name, phone) VALUES (?, ?)"; Object[] bindArgs = { contact.getName(), contact.getPhone() }; this.openHelper.getWritableDatabase().execSQL(sql, bindArgs); }
/** * 查找 * * @param id * @return */ public Contact find(Integer id) { String sql = "SELECT _id,name, phone FROM contacts WHERE _id=?"; String[] selectionArgs = { id + "" }; Cursor cursor = this.openHelper.getReadableDatabase().rawQuery(sql, selectionArgs); if (cursor.moveToFirst()) return new Contact(cursor.getInt(0), cursor.getString(1), cursor .getString(2)); return null; }
/** * 更新 * * @param contact */ public void update(Contact contact) { String sql = "UPDATE contacts SET name=?, phone=? WHERE _id=?"; Object[] bindArgs = { contact.getName(), contact.getPhone(), contact.get_id() }; this.openHelper.getWritableDatabase().execSQL(sql, bindArgs); }
/** * 删除 * * @param id */ public void delete(Integer id) { String sql = "DELETE FROM contacts WHERE _id=?"; Object[] bindArgs = { id }; this.openHelper.getReadableDatabase().execSQL(sql, bindArgs); }
/** * 获取记录数量 * * @return */ public long getCount() { String sql = "SELECT count(*) FROM contacts"; Cursor cursor = this.openHelper.getReadableDatabase().rawQuery(sql, null); cursor.moveToFirst(); return cursor.getLong(0); }
/** * 获取分页数据 * * @param startIndex * @param maxCount * @return */ public List<Contact> getScrollData(long startIndex, long maxCount) { String sql = "SELECT _id,name,phone FROM contacts LIMIT ?,?"; String[] selectionArgs = { String.valueOf(startIndex), String.valueOf(maxCount) }; Cursor cursor = this.openHelper.getReadableDatabase().rawQuery(sql, selectionArgs); List<Contact> contacts = new ArrayList<Contact>(); while (cursor.moveToNext()) { Contact contact = new Contact(cursor.getInt(0), cursor.getString(1), cursor.getString(2)); contacts.add(contact); } return contacts; }
/** * 获取分页数据,提供给SimpleCursorAdapter使用。 * * @param startIndex * @param maxCount * @return */ public Cursor getScrollDataCursor(long startIndex, long maxCount) { String sql = "SELECT _id,name,phone FROM contacts LIMIT ?,?"; String[] selectionArgs = { String.valueOf(startIndex), String.valueOf(maxCount) }; Cursor cursor = this.openHelper.getReadableDatabase().rawQuery(sql, selectionArgs); return cursor; } } |
5.编写测试类
编写一个针对ContactsService的测试类,测试ContactsService类中的各个方法是否正确。
package com.changcheng.sqlite.test;
import java.util.List; import com.changcheng.sqlite.MyOpenHelper; import com.changcheng.sqlite.entity.Contact; import com.changcheng.sqlite.service.ContactsService; import android.database.Cursor; import android.test.AndroidTestCase; import android.util.Log;
public class ContactsServiceTest extends AndroidTestCase {
private static final String TAG = "ContactsServiceTest";
// 测试创建表 public void testCreateTable() throws Throwable { MyOpenHelper openHelper = new MyOpenHelper(this.getContext()); openHelper.getWritableDatabase(); }
// 测试save public void testSave() throws Throwable { ContactsService contactsService = new ContactsService(this.getContext()); Contact contact1 = new Contact(null, "tom", "13898679876"); Contact contact2 = new Contact(null, "lili", "13041094909"); Contact contact3 = new Contact(null, "jack", "13504258899"); Contact contact4 = new Contact(null, "heary", "1335789789"); contactsService.save(contact1); contactsService.save(contact2); contactsService.save(contact3); contactsService.save(contact4); }
// 测试find public void testFind() throws Throwable { ContactsService contactsService = new ContactsService(this.getContext()); Contact contact = contactsService.find(1); Log.i(TAG, contact.toString()); }
// 测试update public void testUpdate() throws Throwable { ContactsService contactsService = new ContactsService(this.getContext()); Contact contact = contactsService.find(1); contact.setPhone("1399889955"); contactsService.update(contact); }
// 测试getCount public void testGetCount() throws Throwable { ContactsService contactsService = new ContactsService(this.getContext()); Log.i(TAG, contactsService.getCount() + ""); }
// 测试getScrollData public void testGetScrollData() throws Throwable { ContactsService contactsService = new ContactsService(this.getContext()); List<Contact> contacts = contactsService.getScrollData(0, 3); Log.i(TAG, contacts.toString()); }
// 测试getScrollDataCursor public void testGetScrollDataCursor() throws Throwable { ContactsService contactsService = new ContactsService(this.getContext()); Cursor cursor = contactsService.getScrollDataCursor(0, 3); while (cursor.moveToNext()) { Contact contact = new Contact(cursor.getInt(0), cursor.getString(1), cursor.getString(2)); Log.i(TAG, contact.toString()); } }
} |
启用测试功能,不要忘记在AndroidManifest.xml文件中加入测试环境。为application元素添加一个子元素:<uses-library android:name="android.test.runner"/>,为application元素添加一个兄弟元素:<instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.changcheng.sqlite" android:label="Tests for My App" />。
SQLite数据库以单个文件存储,就像微软的Access数据库。有一个查看SQLite数据库文件的工具——SQLite Developer,我们可以使用它来查看数据库。Android将创建的数据库存放在”/data/data/ com.changcheng.sqlite/databases/contacts”,我们将它导出然后使用SQLite Developer打开。
6.分页显示数据
我们在ContactsService类中,提供了一个获取分页数据的方法。我们将调用它获取的数据,使用ListView组件显示出来。
编辑mail.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- ListView --> <ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/listView" />
</LinearLayout> |
发表评论
-
android博客
2010-10-11 10:23 831http://www.getideas.cn/?cat=4 -
在android的程序里面使用ROOT权限
2010-10-09 16:11 462/*** * 获取超级用户权限 ... -
Android经典教程
2010-10-09 15:52 24131、传智播客——Android开发(一)Android搭建、H ... -
Android(五)数据存储之五网络数据交互 3
2010-10-09 15:51 1433其中使用到的HttpRequester类: packa ... -
Android(五)数据存储之五网络数据交互 2
2010-10-09 15:50 14683.ClientService类 package c ... -
Android(五)数据存储之五网络数据交互 1
2010-10-09 15:49 2218昨天我们只对Android接收网络数据进行了简单介绍,今天我们 ... -
Android(四)数据存储之五网络
2010-10-09 15:48 1367既然是3G开发,网络重要性自然不必多说!Android的网 ... -
Android(四)数据存储之四ContentProvider 2
2010-10-09 15:47 9793.测试SQLite示例程序的ContentProvider ... -
Android(四)数据存储之四ContentProvider
2010-10-09 15:44 1241早上我们简要的对SQLite进行回顾,然后将SQLite的事务 ... -
Android(三)数据存储之三SQLite嵌入式数据库 3
2010-10-09 15:43 1502在mail.xml所在目录里添加一个contactitem.x ... -
Android(三)数据存储之三SQLite嵌入式数据库 1
2010-10-09 15:40 1603前两篇日志我已经总结 ... -
Android(三) 数据存储之二 SharedPreferences
2010-10-09 15:39 1473在此之前的学习内容是数据存储之一文件存储。在本地存储中常用的有 ... -
Android(三)数据存储之XML解析技术 2
2010-10-09 15:38 1557二、Pull解析技术 Pull解析技术与Sax ... -
Android(三)数据存储之XML解析技术 1
2010-10-09 15:36 1459今日继续学习Android中使用Pull的XML解析技术实现对 ... -
Android(二)数据存储和访问 之文件 1
2010-10-09 15:35 1135package com.changcheng.file. ... -
Android(二)数据存储和访问 之文件 1
2010-10-09 15:32 1234今日重点内容是Adnroid的数据存储和访问。Android的 ... -
Android开发(一)发送短信程序
2010-10-09 15:31 1076一、创建 Android工程 Project name:Se ... -
Android开发(一)拨打电话程序
2010-10-09 15:30 1647一、创建 Android工程 Project name:Ca ... -
Android开发(一)Android搭建、HelloWorld
2010-10-09 15:29 1295万众瞩目,Android终于开课了。本课程有黎活明老师主讲,讲 ... -
Android开发如何利用Google map
2010-10-09 09:47 3862自google 06年进入中国,在地图、移动领域的发展速度基本 ...
相关推荐
一款基于Android平台下设计各个Activity布局和控件与结合SQLite轻型的嵌入式数据库使用java进行开发的一款android端的学生信息管理系统、主要包括学生信息添加、维护、查询、学生成绩添加、维护、查询、系统管理、...
本文实例分析了Android编程操作嵌入式关系型SQLite数据库的方法。分享给大家供大家参考,具体如下: SQLite特点 1.Android平台中嵌入了一个关系型数据库SQLite,和其他数据库不同的是SQLite存储数据时不区分类型 ...
嵌入式Android项目设计与开发 第六章 数据存储 ——SQLite 2 SQLite 数据库管理员 数据库实体A 表 表 数据库实体B 表 表 数据库实体 表 表 SQLite 我们已经掌握: SQLite是一款轻量级的关系型数据库,它的运算效率高...
它的设计目标是嵌入式的,而且占用资源非常低,在内存中只需要占用几百kB的存储空间,这也是Android移动设备采用SQLite数据库的重要原因之一。 SQLite 是遵守ACID的关系型数据库管理系统。这里的ACID是指数据库事务...
嵌入式Android项目设计与开发 第六章 数据存储 ——SQLite 1 SQLite 概念: SQLite是一款轻量级的关系型数据库,它的运算效率高,占用资源少,因此比较适合在移动设备上使用。 SQLite Android为了让我们更加方便地...
在Android中创建的SQLite数据库存储在:/data/data/<包名>/databases/目录下。 主要特点: -轻量级 -独立性,没有不依赖,无需安装 -跨平台,支持众多操作系统 -支持高达2TB大小的数据库 -每个数据库以单个文件的...
SQLite已经被多种软件和产品使用,Mozilla FireFox就是使用SQLite来存储配置数据的,Android和iPhone都是使用SQLite来存储数据的。 SQLite体系结构图如下: 编译器包括Tokenizer(词法分析器)、 Parser(语法...
本个人理财软件系统是在Android移动平台的基础上开发,提供了预算...本系统采用Android系统集成的轻量级嵌入式数据库SQLite作为数据库引擎,以实现前后台数据交互。 关键词:个人理财; Android; Java; SQLite; JSON
在Android中也支持这样的文件存储,但是现在这里主要说的还是使用SQLite存储数据,SQLite是一种跨平台的数据库,是单文件式的,如咱们平常见的最多的Access数据库,但是他有比Access更好的平台支持,并且支持分页,...
一、使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL、INTEGER、REAL(浮点数字)、 TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的...
2. SQLite:SQLite是一种嵌入式关系型数据库管理系统,广泛应用于移动设备和嵌入式系统。它是Android应用程序常用的本地数据库解决方案,可用于存储和管理应用程序的数据。 3. 登录注册功能:登录注
嵌入式Android项目设计与开发 第六章 数据存储 ——SQLite 3 SQLite 内容: SQLite如何插入数据。 (1)SQL语句。insert into table…value() (2)使用SQLiteOpenHelper接口 实验 通过SQLiteOpenHelper接口insert ...
我们在使用SQLite进行数据存储查询的时候,要进行查询优化,这里就会用到索引,C端的数据量大部分情况下面虽然不是很大,但良好的索引建立习惯往往会带来不错的查询性能提升,同时在未知的将来经得住更大数据的考验...
每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作...SQLite已经被多种软件和产品使用,Mozilla FireFox就是使用SQLite来存储配置数据的,Android和iPhone都是使用SQLite来存储数据的。
嵌入式Android项目设计与开发 第六章 数据存储 ——SQLite 4 SQLite 内容: SQLite如何删除数据。 (1)SQL语句。delete from table where.. (2)使用SQLiteOpenHelper接口 实验 通过SQLiteOpenHelper接口delete 来...
其中前四种都是缓存数据到本地,这篇主要讲的是使用第三种方式来实现App中的收藏功能,不过不用Android原生自带SQLite数据库来存储数据,而是使用第三方的Realm数据库来来存储数据。 Realm 本质上是一个嵌入式数据库...
SQLite 是一个开源的嵌入式关系数据库,它可以减少应用程序管理数据的开销 , SQLite 可移植性好 、 很容易使用 、 很小 、 高效而且可靠 。目前在Android 系统中集成的是 SQLite3 版本 ,SQLite 不支持静态数据类型...
其中前四种都是缓存数据到本地,这篇主要讲的是使用第三种方式来实现App中的收藏功能,不过不用Android原生自带SQLite数据库来存储数据,而是使用第三方的Realm数据库来来存储数据。 Realm 本质上是一个嵌入式数据库...
先介绍几个基本概念知识: Android是基于Linux内核的操作系统,是Google公司在2007年11月5... SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产