核心代码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. Python、机器学习、计算机视觉、深度学习入门

    1.简明Python教程 2.Python计算机视觉编程 3.机器学习实践 4.吴恩达机器学习 5.李飞飞深度学习与计算机视觉

  2. python中魔法方法(持续更新)

    1.对于一个自定义的类,如果实现了 __call__ 方法,那么该类的实例对象的行为就是一个函数,是一个可以被调用(callable)的对象.例如: class Add: def __init__(s ...

  3. Python从文件中读取数据(2)

    一.读取文件中各行的内容并存储到一个列表中 继续用resource.txt 举例 resource.txt my name is joker, I am 18 years old, How about ...

  4. solr DIH 设置定时索引

    1 web.xml中加入 web.xml所在目录 /opt/solr-7.7.1/server/solr-webapp/webapp/WEB-INF <listener> <list ...

  5. Git常用的基本操作

    一.如何学习git指令 1.查看帮助:git help2.查看指定命令:git help clone3.搜索关键字:/chone 4.退出帮助文档:输入Q 二.常见命令 1.初始化git本地仓库:先进 ...

  6. android sdk 下载

    不知道是因为最近kaihui还是怎么的,打开android sdk官方网站特别的慢,想下载最新版本的platform几乎变成不可能完成的任务,不知道为什么Google不像Apache那样在各国设立镜像 ...

  7. luogu1231 教辅的组成

    注意把书拆成两份 #include <iostream> #include <cstring> #include <cstdio> #include <que ...

  8. Leetcode 394.字符串编码

    字符串编码 给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正 ...

  9. Linux中执行shell脚本命令的4种方法总结

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

  10. numpy hstack()

    numpy.hstack(tup)[source] Stack arrays in sequence horizontally (column wise). Take a sequence of ar ...