
Person实体类
复制代码 代码如下:
package com.ljq.domain;
public class Person {
private Integer ID;
private String name;
private String phone;
public Person() {
super();
}
public Person(String name,String phone) {
super();
this.name = name;
this.phone = phone;
}
public Person(Integer ID,String name,String phone) {
super();
this.ID = ID;
this.name = name;
this.phone = phone;
}
public Integer getID() {
return ID;
}
public voID setID(Integer ID) {
this.ID = ID;
}
public String getname() {
return name;
}
public voID setname(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public voID setPhone(String phone) {
this.phone = phone;
}
}
DBOpenHelper数据库关联类
复制代码 代码如下:
package com.ljq.db;
import androID.content.Context;
import androID.database.sqlite.sqliteDatabase;
import androID.database.sqlite.sqliteOpenHelper;
public class DBOpenHelper extends sqliteOpenHelper {
// 类没有实例化,是不能用作父类构造器的参数,必须声明为静态
private static final String DBname = "ljq.db";
private static final int VERSION = 1;
// 第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,
// 设置为null,代表使用系统默认的工厂类
public DBOpenHelper(Context context) {
super(context,DBname,null,VERSION);
}
@OverrIDe
public voID onCreate(sqliteDatabase db) {
db.execsql("CREATE table PERSON (ID INTEGER PRIMARY KEY autoINCREMENT,name VARCHAR(20),PHONE VARCHAR(20))");
}
@OverrIDe
public voID onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {
// 注:生产环境上不能做删除 *** 作
db.execsql("DROP table IF EXISTS PERSON");
onCreate(db);
}
}
PersonService业务类
复制代码 代码如下:
package com.ljq.db;
import java.util.ArrayList;
import java.util.List;
import androID.content.Context;
import androID.database.Cursor;
import com.ljq.domain.Person;
public class PersonService {
private DBOpenHelper dbOpenHelper = null;
/**
* 构造函数
*
* 调用getWritableDatabase()或getReadableDatabase()方法后,会缓存sqliteDatabase实例;
* 因为这里是手机应用程序,一般只有一个用户访问数据库,所以建议不关闭数据库,保持连接状态。
* getWritableDatabase(),getReadableDatabase的区别是当数据库写满时,调用前者会报错,调用后者不会,
* 所以如果不是更新数据库的话,最好调用后者来获得数据库连接。
*
* 对于熟悉SQL语句的程序员最好使用exesql(),rawquery(),因为比较直观明了
*
* @param context
*/
public PersonService(Context context){
dbOpenHelper = new DBOpenHelper(context);
}
public voID save(Person person){
dbOpenHelper.getWritableDatabase().execsql("insert into person(name,phone) values (?,?)",
new Object[]{person.getname(),person.getPhone()});
}
public voID update(Person person){
dbOpenHelper.getWritableDatabase().execsql("update person set name=?,phone=? where ID=?",person.getPhone(),person.getID()});
}
public voID delete(Integer... IDs){
if(IDs.length>0){
StringBuffer sb = new StringBuffer();
for(Integer ID : IDs){
sb.append("?").append(",");
}
sb.deleteCharat(sb.length() - 1);
dbOpenHelper.getWritableDatabase().execsql("delete from person where ID in ("+sb+")",(Object[])IDs);
}
}
public Person find(Integer ID){
Cursor cursor = dbOpenHelper.getReadableDatabase().rawquery("select ID,name,phone from person where ID=?",
new String[]{String.valueOf(ID)});
if(cursor.movetoNext()){
int personID = cursor.getInt(0);
String name = cursor.getString(1);
String phone = cursor.getString(2);
return new Person(personID,phone);
}
return null;
}
public long getCount(){
Cursor cursor = dbOpenHelper.getReadableDatabase().query("person",
new String[]{"count(*)"},null);
if(cursor.movetoNext()){
return cursor.getLong(0);
}
return 0;
}
/**
* 分页
*
* @param startResult 偏移量,默认从0开始
* @param maxResult 每页显示的条数
* @return
*/
public List<Person> getScrollData(int startResult,int maxResult){
List<Person> persons = new ArrayList<Person>();
//Cursor cursor = dbOpenHelper.getReadableDatabase().query("person",new String[]{"ID,phone"},
// "name like ?",new String[]{"%ljq%"},"ID desc","1,2");
Cursor cursor = dbOpenHelper.getReadableDatabase().rawquery("select * from person limit ?,?",
new String[]{String.valueOf(startResult),String.valueOf(maxResult)});
while(cursor.movetoNext()) {
int personID = cursor.getInt(0);
String name = cursor.getString(1);
String phone = cursor.getString(2);
persons.add(new Person(personID,phone));
}
return persons;
}
}
PersonServiceTest测试类
复制代码 代码如下:
package com.ljq.test;
import java.util.List;
import com.ljq.db.PersonService;
import com.ljq.domain.Person;
import androID.test.AndroIDTestCase;
import androID.util.Log;
public class PersonServiceTest extends AndroIDTestCase{
private final String TAG = "PersonServiceTest";
public voID testSave() throws Exception{
PersonService personService = new PersonService(this.getContext());
personService.save(new Person("zhangsan1","059188893343"));
personService.save(new Person("zhangsan2","059188893343"));
personService.save(new Person("zhangsan3","059188893343"));
personService.save(new Person("zhangsan4","059188893343"));
personService.save(new Person("zhangsan5","059188893343"));
}
public voID testUpdate() throws Exception{
PersonService personService = new PersonService(this.getContext());
Person person = personService.find(1);
person.setname("linjiqin");
personService.update(person);
}
public voID testFind() throws Exception{
PersonService personService = new PersonService(this.getContext());
Person person = personService.find(1);
Log.i(TAG,person.getname());
}
public voID testList() throws Exception{
PersonService personService = new PersonService(this.getContext());
List<Person> persons = personService.getScrollData(0,10);
for(Person person : persons){
Log.i(TAG,person.getID() + " : " + person.getname());
}
}
public voID testCount() throws Exception{
PersonService personService = new PersonService(this.getContext());
Log.i(TAG,String.valueOf(personService.getCount()));
}
public voID testDelete() throws Exception{
PersonService personService = new PersonService(this.getContext());
personService.delete(1);
}
public voID testDeleteMore() throws Exception{
PersonService personService = new PersonService(this.getContext());
personService.delete(new Integer[]{2,5,6});
}
}
运行结果
以上是内存溢出为你收集整理的Android SQLite数据库增删改查 *** 作的案例分析全部内容,希望文章能够帮你解决Android SQLite数据库增删改查 *** 作的案例分析所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)