- 浏览: 129098 次
文章分类
最新评论
-
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 870http://www.getideas.cn/?cat=4 -
在android的程序里面使用ROOT权限
2010-10-09 16:11 462/*** * 获取超级用户权限 ... -
Android经典教程
2010-10-09 15:52 24481、传智播客——Android开发(一)Android搭建、H ... -
Android(五)数据存储之五网络数据交互 3
2010-10-09 15:51 1495其中使用到的HttpRequester类: packa ... -
Android(五)数据存储之五网络数据交互 2
2010-10-09 15:50 15253.ClientService类 package c ... -
Android(五)数据存储之五网络数据交互 1
2010-10-09 15:49 2280昨天我们只对Android接收网络数据进行了简单介绍,今天我们 ... -
Android(四)数据存储之五网络
2010-10-09 15:48 1404既然是3G开发,网络重要性自然不必多说!Android的网 ... -
Android(四)数据存储之四ContentProvider 2
2010-10-09 15:47 10163.测试SQLite示例程序的ContentProvider ... -
Android(四)数据存储之四ContentProvider
2010-10-09 15:44 1289早上我们简要的对SQLite进行回顾,然后将SQLite的事务 ... -
Android(三)数据存储之三SQLite嵌入式数据库 3
2010-10-09 15:43 1555在mail.xml所在目录里添加一个contactitem.x ... -
Android(三)数据存储之三SQLite嵌入式数据库 1
2010-10-09 15:40 1656前两篇日志我已经总结 ... -
Android(三) 数据存储之二 SharedPreferences
2010-10-09 15:39 1531在此之前的学习内容是数据存储之一文件存储。在本地存储中常用的有 ... -
Android(三)数据存储之XML解析技术 2
2010-10-09 15:38 1607二、Pull解析技术 Pull解析技术与Sax ... -
Android(三)数据存储之XML解析技术 1
2010-10-09 15:36 1494今日继续学习Android中使用Pull的XML解析技术实现对 ... -
Android(二)数据存储和访问 之文件 1
2010-10-09 15:35 1177package com.changcheng.file. ... -
Android(二)数据存储和访问 之文件 1
2010-10-09 15:32 1287今日重点内容是Adnroid的数据存储和访问。Android的 ... -
Android开发(一)发送短信程序
2010-10-09 15:31 1164一、创建 Android工程 Project name:Se ... -
Android开发(一)拨打电话程序
2010-10-09 15:30 1700一、创建 Android工程 Project name:Ca ... -
Android开发(一)Android搭建、HelloWorld
2010-10-09 15:29 1336万众瞩目,Android终于开课了。本课程有黎活明老师主讲,讲 ... -
Android开发如何利用Google map
2010-10-09 09:47 3899自google 06年进入中国,在地图、移动领域的发展速度基本 ...
相关推荐
SQLite是一款广泛应用于移动开发领域的开源嵌入式数据库,尤其在Java Android平台上。SQLite具有轻量级、绿色软件、单一文件等特点,使得它成为许多小型应用和嵌入式系统的首选数据库解决方案。 SQLite的主要特性:...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的数据。SQLite具有高效、可靠且易于集成的特点,使得它成为Android应用数据...
嵌入式数据库在IT行业中扮演着重要的角色,特别是在移动设备和轻量级应用程序中,其中SQLite是最为广泛使用的之一。SQLite是一款开源、轻量级、自包含的SQL数据库引擎,无需独立服务器进程即可运行,因此被称为...
在Android中,SQLite是默认的嵌入式数据库,通过SQLiteOpenHelper和SQLiteDatabase类进行操作。这两个类提供了创建、打开、升级数据库以及执行SQL命令的方法。开发者可以利用它们来实现数据的添加、删除、修改和查询...
本教程将探讨如何在ArcGIS for Android环境中利用SQLite数据库进行数据存储和读取。 1. **SQLite数据库介绍**: SQLite是一个自包含、无服务器、零配置、事务性的SQL数据库引擎,无需额外的数据库管理器进程,直接...
2. **嵌入式数据库**:SQLite不需要单独的服务器进程,数据库存储在单个文件中,这简化了部署和管理。它可以直接被应用程序调用,减少了系统资源的需求。 3. **支持标准SQL**:SQLite符合SQL-92标准,支持常见的SQL...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于处理应用程序中的数据存储。"实验十 使用SQLite数据库存储数据"是一个旨在帮助开发者掌握如何在...
SQLite是一款开源、轻量级的嵌入式关系型数据库,广泛应用于移动设备、桌面系统以及服务器,无需单独的服务器进程,可以直接在应用程序中使用。它以其小巧高效、易用性高、可移植性强等特点,成为了许多开发者首选的...
1. **SQLite数据库**:SQLite是一个轻量级的、嵌入式的关系型数据库,广泛应用于移动设备如Android手机中。在Android系统中,SQLite提供了一种持久化存储数据的方式,特别适合小型应用的数据存储需求。在实验中,`...
在安卓开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的数据。SQLite数据库的优势在于它不需要独立的服务进程,可以直接嵌入到应用中...
在Android系统中,SQLite是默认的数据库解决方案,用于应用程序的数据存储。本篇文章将深入探讨如何使用SQLite数据库在Android中存储数据,特别是通过编程接口SQLiteDatabase进行操作。 首先,`SQLiteDatabase`类...
SQLite3是一个轻量级的嵌入式数据库,广泛应用于嵌入式设备,包括Android和iPhone。它的特点包括资源占用低、易于移植和操作,这使得SQLite3成为手机这种资源有限设备的理想选择。在Android系统中,每个应用程序都...
SQLite3是一个轻量级的开源数据库系统,常用于嵌入式设备和移动应用程序,因为它不需要独立的服务器进程,且整个数据库存储在一个文件中。在Android等基于Linux内核的平台上,SQLite3通常以动态库(.so文件)的形式...
在Android开发中,SQLite是一个内置的轻量级数据库系统,用于存储应用程序的数据。SQLite数据库管理系统在Android设备上广泛使用,因为它高效、可靠且易于使用。本文将深入探讨如何在Android的浏览器环境中管理和...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的结构化数据。本资源文件`sqlitetest`着重展示了如何在Android应用中使用...
SQLite是一款轻量级的、开源的关系型数据库管理系统,它被广泛应用于移动设备、嵌入式系统以及各种桌面应用中。由于其小巧、高效且无需独立服务器进程的特点,SQLite成为许多开发者首选的本地数据存储解决方案,特别...
在Android系统中,每个应用都可以拥有自己的SQLite数据库,数据存储在应用的私有目录下,确保了数据的安全性。 "android sqlite_admin"软件则是专为Android平台设计的SQLite数据库管理工具,它的主要功能包括: 1....
在Android开发中,SQLite是一个非常重要的组件,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储应用中的结构化数据。SQLite数据库的优势在于它不需要独立的服务器进程,而是直接集成在应用程序中...
SQLite是一个开源的嵌入式数据库系统,它不需要单独的服务器进程,并且全部数据库都存储在一个文件中。在Android中,每个应用都可以有自己的SQLite数据库,数据存储在应用的私有目录下,确保了数据的安全性。 二、...