核心代码DAO类

package com.examp.use_SQLite.dao;

import java.util.ArrayList;
import java.util.List; import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import com.examp.use_SQLite.PersonSQLiteOpenHelper;
import com.examp.use_SQLite.domain.Person; public class PersonDao {
// 获取要操作的数据库对象
private PersonSQLiteOpenHelper helper; /**
* 在构造方法中完毕helper的初始化
*
* @param context
*/
public PersonDao(Context context) {
helper = new PersonSQLiteOpenHelper(context);
} /**
* 加入数据
*
* @param name姓名
* @param number电话
*/
public void add(String name, String number) {
// 获取数据库的连接对象
SQLiteDatabase db = helper.getWritableDatabase();
// 运行一条SQL语句,并非一个查询/插入/更新/删除。  
// db.execSQL("insert into person (name,number) values (?,?)",
// new Object[] { name, number });
// 以下是API推荐的写法
ContentValues values = new ContentValues();
values.put("name", name);
values.put("number", number);
db.insert("person", null, values);
// 及时的关闭数据库连接
db.close();
} /**
* 依据用户姓名查询数据
*
* @param name
* 查询条件
* @return 查询结果
*/
public Person findByName(String name) {
// 获取数据库连接
SQLiteDatabase db = helper.getReadableDatabase();
// 运行数据库操作语句,
// 得到游标Cursor实例,也就是结果集,相似于Javaweb中的ResultSet
Cursor cursor = db.rawQuery("select * from person where name=? ",
new String[] { name });
// 声明结果对象
Person person = null;
// 推断是否有结果返回
if (cursor.moveToNext()) {
// 取出数据集中的单行数据的个字段的数据
// cursor.getColumnIndex("id");获取指定的字段的下标
// cursor.getInt(index);或getString(index);是获取指定的下标的数据index为int类型;
int id = cursor.getInt(cursor.getColumnIndex("id"));
String named = cursor.getString(cursor.getColumnIndex("name"));
String number = cursor.getString(cursor.getColumnIndex("number"));
// 实例化查询结果数据对象
person = new Person(id, named, number);
}
// 关闭数据库连接,释放资源
db.close();
// 返回数据结果对象
return person;
} /**
* 依据name更新一条数据
*
* @param name
* 跟新条件
* @param newnumber
* 新的数据
*/
public void update(String name, String newnumber) {
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("update person set number=? where name=? ", new Object[] {
newnumber, name }); db.close();
} /**
* 依据指定的名字删除数据
*
* @param name
* 删除条件
*
*/
public void delete(String name) {
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("delete from person where name=? ", new Object[] { name });
db.close();
} public List<Person> findAll() {
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from person", null);
// 声明结果集
// 初始化结果集
List<Person> persons = new ArrayList<Person>();
// 推断是否有结果返回
while (cursor.moveToNext()) { // 声明结果对象
Person person = null;
// 取出数据集中的单行数据的个字段的数据
// cursor.getColumnIndex("id");获取指定的字段的下标
// cursor.getInt(index);或getString(index);是获取指定的下标的数据index为int类型;
int id = cursor.getInt(cursor.getColumnIndex("id"));
String named = cursor.getString(cursor.getColumnIndex("name"));
String number = cursor.getString(cursor.getColumnIndex("number"));
// 实例化查询结果数据对象
person = new Person(id, named, number);
// 向结果集中加入数据
persons.add(person);
}
// 关闭连接,释放资源
db.close();
// 放回结果集
return persons;
}
}

用到的其他的辅助类

package com.examp.use_SQLite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; /**
* 数据库创建的类
*
* @author MartinDong
*
*/
public class PersonSQLiteOpenHelper extends SQLiteOpenHelper { /**
* 数据库的构造方法,用来定义:数据库的环境、数据库的名称、数据库查询结果及、数据库版本号
*
* @param context
*/
public PersonSQLiteOpenHelper(Context context) {
super(context, "person.db", null, 1);
} /**
* 在数据库第一次被创建的时候调用的方法
*
* @param db被创建的数据库
*/
@Override
public void onCreate(SQLiteDatabase db) {
// 初始化数据库的表结构
db.execSQL("create table person (id integer primary key autoincrement,name varchar(20),number varchar(20))"); } @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }

实体业务Bean

package com.examp.use_SQLite.domain;

public class Person {
private int id;
private String name;
private String number; public Person() { } public Person(int id, String name, String number) {
this.id = id;
this.name = name;
this.number = number;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getNumber() {
return number;
} public void setNumber(String number) {
this.number = number;
} @Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", number=" + number
+ "]";
} }

測试类

package com.examp.use_SQLite.test;

import java.util.List;

import com.examp.use_SQLite.PersonSQLiteOpenHelper;
import com.examp.use_SQLite.dao.PersonDao;
import com.examp.use_SQLite.domain.Person; import android.test.AndroidTestCase; public class TestPerson extends AndroidTestCase { public void testCreateDB() throws Exception {
PersonSQLiteOpenHelper helper = new PersonSQLiteOpenHelper(getContext());
helper.getWritableDatabase();
} public void testAdd() {
PersonDao dao = new PersonDao(getContext());
dao.add("donghongyu", "1231231");
} public void testFindByname() {
PersonDao dao = new PersonDao(getContext());
Person person = dao.findByName("lisi");
System.out.println(person.toString());
} public void testUpdate() {
PersonDao dao = new PersonDao(getContext());
dao.update("lisi", "11111111111");
} public void testDelete() {
PersonDao dao = new PersonDao(getContext());
dao.delete("lisi");
} public void testFindAll() {
PersonDao dao = new PersonDao(getContext());
List<Person> persons = dao.findAll();
for (Person person : persons) {
System.out.println(person);
} }
}



注意:使用Junit进行測试的时候,权限文件    AndroidManifest.xml中须要加入例如以下的设置

<?

xml version="1.0" encoding="utf-8"?

>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.examp.use_SQLite"
android:versionCode="1"
android:versionName="1.0" > <instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.examp.use_SQLite" /> <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library android:name="android.test.runner" /> <activity
android:name="com.examp.use_SQLite.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>

Android实现SQLite数据库的增、删、改、查的操作的更多相关文章

  1. iOS FMDB的使用(增,删,改,查,sqlite存取图片)

    iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...

  2. iOS sqlite3 的基本使用(增 删 改 查)

    iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...

  3. 好用的SQL TVP~~独家赠送[增-删-改-查]的例子

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...

  4. django ajax增 删 改 查

    具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...

  5. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  6. MVC EF 增 删 改 查

    using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...

  7. Android SQLite(1)简单示例-增,删,改,查

    1.主要核心类,Sqlite编程要继承SQLiteOpenHelper import android.content.Context; import android.database.sqlite.S ...

  8. Android中Sqlite数据库进行增删改查

    今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...

  9. android 对sqlite数据库的增删改查等各种操作

    转载:http://blog.csdn.net/vrix/article/details/6717090 package com.sqlite.main; import java.io.File; i ...

随机推荐

  1. C# 反射总结

    反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的 ...

  2. Django中的tags,母版和继承,组件,静态文件相关,自定义simpletag和自定义inclusion_tag

    Tags for <ul> {% for user in user_list %} <li>{{ user.name }}</li> {% endfor %} &l ...

  3. 二分查找与 bisect 模块

    Python 的列表(list)内部实现是一个数组,也就是一个线性表.在列表中查找元素可以使用 list.index() 方法,其时间复杂度为O(n).对于大数据量,则可以用二分查找进行优化.二分查找 ...

  4. search Paths $(SRCROOT)和$(PROJECT_DIR)区别

    $(SRCROOT)代表的时项目根目录下 $(PROJECT_DIR)代表的是整个项目 PS:往项目添加文件时,例如.a等,要先showinfinder ,复制到项目中,然后再拖到xcode项目中

  5. Educational Codeforces Round 24

    A. Diplomas and Certificates time limit per test 1 second memory limit per test 256 megabytes input ...

  6. HDU-4612 Warm up,tarjan求桥缩点再求树的直径!注意重边

    Warm up 虽然网上题解这么多,感觉写下来并不是跟别人竞争访问量的,而是证明自己从前努力过,以后回头复习参考! 题意:n个点由m条无向边连接,求加一条边后桥的最少数量. 思路:如标题,tarjan ...

  7. 13-数组的API方法遍历

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. BZOJ 3227 [Sdoi2008]红黑树(tree) ——贪心 动态规划

    首先可以想到一个贪心的方法,然后一层一层的合并. 也可以采用动态规划的方式,为了写起来好写,把点数*2+1,然后发现在本机上跑不过1500的数据. 交上去居然A掉了. 贪心 #include < ...

  9. spring两个核心IOC、AOP

    Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的Java 开发框架,由 ...

  10. TeraTerm设定(窗体大小,字体字号)保存为默认值

    Tera Term是一款很好的SSH工具,大家经常遇到一个头疼的问题,每次打开的时候,都要自己重新设置一遍Font. 介绍一下把自己喜欢的字体,设置好后,保存到默认配置中的方法. 设置窗体大小: 设置 ...