android操作自带的SQlite数据库

来源:互联网 发布:知乎 汉语 不及物动词 编辑:程序博客网 时间:2024/05/20 10:14

创建DBOpenHelper类

DBOpenHelper.java(一定要继承SQLiteOpenHelper )

import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DBOpenHelper extends SQLiteOpenHelper {    public DBOpenHelper(Context context) {        /*         * 数据库文件默认创建在 <包>/databases/         * name要生成数据库名称         * factory游标工厂用null使用系统默认的游标工厂         * version数据库文件的版本号,不能为0         * */        super(context, "mydb.db", null, 1);    }    @Override    public void onCreate(SQLiteDatabase db) {        // TODO 数据库第一次被创建的时候调用        db.execSQL("CREATE TABLE person (id INTEGER PRIMARY KEY autoincrement, name VARCHAR(20))");//创建person表    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        // TODO 数据库文件的版本号发生变更的时候调用        db.execSQL("ALTER TABLE person ADD phone VARCHAR(12) NULL");//往表中增加一列    }}

创建数据库

DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext());dbOpenHelper.getWritableDatabase();//第一次调用时会创建数据库

保存

        DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext());        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();//对同一个dbOpenHelper实例有缓存        Person person = new Person();        person.setName("user");        //方法一        List<Object> para = new ArrayList<Object>();        para.add(person.getName());        db.execSQL("insert into person(name) values(?)", para.toArray());        //方法二        ContentValues contentValues = new ContentValues();        contentValues.put("name", person.getName());        /*第一个参数:表名         * 第二个参数:null空值字段,当contentValues为null时用到,可以传null或表中字段("id")         * 第三个参数:要保存的值         * */        db.insert("person", null, contentValues);        db.close();

删除

        DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext());        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();        //方法一        List<Object> para = new ArrayList<Object>();        para.add(1);        db.execSQL("delete from person where id=?", para.toArray());        //方法二        db.delete("person", "id=?", new String[]{"1"});//表名,条件,占位符的值        db.close();

事物

修改

        DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext());        Person person = new Person();        person.setId(5);        person.setName("yyyyy");        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();        //方法一        List<Object> para = new ArrayList<Object>();        para.add(person.getName());        para.add(person.getId());        db.execSQL("update person set name=? where id=?", para.toArray());        //方法二        ContentValues values = new ContentValues();        values.put("name", person.getName());        db.update("person", values, "id=?", new String[]{person.getId().toString()});//表名,更新的值,条件,条件中占位符的值        db.close();

查找

根据id查找

        DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext());        Person person = null;        SQLiteDatabase db = dbOpenHelper.getReadableDatabase();        Long id=1l;        //方法一        Cursor cursor = db.rawQuery("select * from person where id=?", new String[]{id+""});        //方法二        /*         * 第一个参数:表名         * 第二个参数:要查找的字段名(如:new String[]{"id","name"}),如果传null将查全部         * 第三个参数:条件         * 第四个参数:条件中的值         * 第五个参数:查询语句中的groupBy没有传null         * 第六个参数:查询语句中的having没有传null         * 第七个参数:查询语句中的orderBy没有传null         * */        Cursor cursor = db.query("person", null, "id=?", new String[]{id+""}, null, null, null);        if(cursor.moveToFirst()){            String name = cursor.getString(cursor.getColumnIndex("name"));            person = new Person(id,name);        }        db.close();        Log.i(TAG, person.toString());

分页查找

        DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext());        List<Person> list = new ArrayList<Person>();        Person person = null;        int offser = 0;        int maxResult = 5;        SQLiteDatabase db = dbOpenHelper.getReadableDatabase();        //方法一        Cursor cursor = db.rawQuery("select * from person order by id asc limit ?,?", new String[]{offser+"",maxResult+""});        //方法二        /*         * 第一个参数:表名         * 第二个参数:要查找的字段名(如:new String[]{"id","name"}),如果传null将查全部         * 第三个参数:条件         * 第四个参数:条件中的值         * 第五个参数:查询语句中的groupBy没有传null         * 第六个参数:查询语句中的having没有传null         * 第七个参数:查询语句中的orderBy没有传null         * 第八个参数:limit         * */        cursor = db.query("person", null, null, null, null, null, "id asc", offser+","+maxResult);        while(cursor.moveToNext()){            person = new Person(cursor.getInt(cursor.getColumnIndex("id")), cursor.getString(cursor.getColumnIndex("name")));            list.add(person);        }        db.close();        for(Person p : list){            Log.i(TAG, p.toString());        }

获取数据记录数

        DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext());        SQLiteDatabase db = dbOpenHelper.getReadableDatabase();        //方法一        Cursor cursor = db.rawQuery("select COUNT(id) from person",new String[]{});        //方法二        cursor = db.query("person", new String[]{"COUNT(id)"}, null, null, null, null, null);        if(cursor.moveToFirst()){            return cursor.getLong(0);        }

事务

    PersonService personService = new PersonService(getContext());    Person person = new Person();    person.setId(5);    person.setName("yyyyy");    SQLiteDatabase db = dbOpenHelper.getWritableDatabase();    List<Object> para = new ArrayList<Object>();    para.add(person.getName());    para.add(person.getId());    db.beginTransaction();//开启事务    try {        db.execSQL("update person set name=? where id=?", para.toArray());        db.setTransactionSuccessful();//设置事务的标志为True    } finally{        /*         * 结束事务,有两种情况:commit,rollback         * 事务的提交或回滚是由事务的标志决定的,如果事务的标志为True事务就提交,否则回滚         * 默认情况下事务的标志为false         * */        db.endTransaction();    }    db.close();

附件

Person.java

public class Person {    private Integer id;    private String name;    public Person() {        super();    }    public Person(Integer id, String name) {        super();        this.id = id;        this.name = name;    }    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;    }    @Override    public String toString() {        return "Person [id=" + id + ", name=" + name + "]";    }}
0 0
原创粉丝点击