核心代码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>

最新文章

  1. Java中测试异常的多种方式
  2. rJava配置
  3. The Datastore
  4. HW6.10
  5. 关于javascript的沙箱模式以及缓存方法
  6. hdu2444二分图最大匹配+判断二分图
  7. shell中关于sort的-o选项
  8. VS2010+OpenCV3.4.1+zbar 64位
  9. node中处理异步常用的方法,回调函数和events 模块处理异步
  10. SQLAlchemy 增删改查 一对多 多对多
  11. 一次enq: TX - index contention等待事件处理
  12. 11个简单的Java性能调优技巧,傻瓜都能学会!
  13. Apache重写规则
  14. HighCharts使用更多图表HighChartsMore
  15. Duboo 与springboot整合
  16. 【Hibernate步步为营】--最后的集合映射
  17. Hibernate_Validator学习
  18. Linux文件描述符
  19. bootstrap基础学习七篇
  20. [翻译]纠正PostCSS的4大认识误区

热门文章

  1. datetime模块,random模块
  2. 数据结构( Pyhon 语言描述 ) — —第10章:树
  3. (转)编写高质量的OC代码
  4. I2C驱动框架(五)
  5. 算法学习记录-排序——冒泡排序(Bubble Sort)
  6. cookie小结(转)
  7. Matplotlib基本图形之饼状图
  8. x86 保护方式 简介 一
  9. 九度oj 题目1491:求1和2的个数
  10. heartbeat负载均衡详解