Android SQLite数据库增删改查 *** 作的案例分析

Android SQLite数据库增删改查 *** 作的案例分析,第1张

概述Person实体类复制代码代码如下:packagecom.ljq.domain;publicclassPerson{   privateIntegerid;   privateStringname;   privateStringphone;

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数据库增删改查 *** 作的案例分析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1141320.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存