Android实例demo8之Sqlite的使用(sql语句、android api)

在android中使用数据库,可以使用sql语句,也可以使用android对sql封装的api。

android对sql封装的api的操作添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD

SQLiteOpenHelper 这个类用于数据库的创建。

    /**
     * 数据库的构造函数
     * @param context
     *
     * name 数据库名称
     * factory 游标工程
     * version 数据库的版本号 不可以小于1
     */
    public Sqlitedatabasedb(Context context, String name,
            CursorFactory factory, int version) {
        super(context, name, null, version);
        // TODO Auto-generated constructor stub
    }
    /**
     * 数据库第一次创建时回调此方法.
     * 初始化一些表
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        // 操作数据库
        String sql = "create table person(_id integer primary key, name varchar(10), age integer);";
        db.execSQL(sql);        // 创建person表
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        Log.i("db upgrade", TAG);
    }

然后我们还要封装一个实例对象,这个比较简单,这里就不详述了。

然后我们要封装一个类,实现基本的增删查改操作:

    private Sqlitedatabasedb mSqlitedatabasedb;
    public persondao(Context mContext,String name,int version){
        mSqlitedatabasedb = new Sqlitedatabasedb(mContext, name, null, version);
        Log.i("sssss", "persondao");
    }
    /**
     * 添加到person表一条数据
     * @param person
     */
    public void insert(person mPerson){
        SQLiteDatabase dbDatabase = mSqlitedatabasedb.getWritableDatabase();
        if (dbDatabase.isOpen()) {
            dbDatabase.execSQL("insert into person(name, age) values(?, ?);", new Object[]{mPerson.getName(), mPerson.getAge()});
            dbDatabase.close();
        }
        Log.i("insert", "persondao");
    }
    /**
     * 更据id删除记录
     * @param id
     */
    public void deleate(int id){
        SQLiteDatabase dbDatabase = mSqlitedatabasedb.getWritableDatabase();
        if (dbDatabase.isOpen()) {
            dbDatabase.execSQL("delete from person where _id = ?;", new Integer[]{id});
            dbDatabase.close();
        }
    }
    /**
     * 根据id找到记录, 并且修改姓名
     * @param id
     * @param name
     */
    public void upgrade(int id,String name){
        SQLiteDatabase dbDatabase = mSqlitedatabasedb.getWritableDatabase();
        if (dbDatabase.isOpen()) {
            dbDatabase.execSQL("update person set name = ? where _id = ?;", new Object[]{name, id});
            dbDatabase.close();
        }
    }
    /**
     * 查询所有内容
     * @param id
     * @param name
     */
    public List<person> findall(){
        SQLiteDatabase dbDatabase = mSqlitedatabasedb.getReadableDatabase();
        List<person> mList = new ArrayList<person>();
        int id;
        String name;
        int age;
        if (dbDatabase.isOpen()) {
            Cursor cursor = dbDatabase.rawQuery("select _id, name, age from person;", null);
            if (cursor!=null && cursor.getCount()>0) {
                while(cursor.moveToNext()) {
                    id = cursor.getInt(0);
                    name = cursor.getString(1);    
                    age = cursor.getInt(2);
                    mList.add(new person(id, name, age));
                }

            }
            dbDatabase.close();
        }
        return mList;
    }
    /**
     * 根据id查询人
     * @param id
     * @return
     */
    public person queryItem(int id) {
        SQLiteDatabase db = mSqlitedatabasedb.getReadableDatabase();    // 获得一个只读的数据库对象
        if(db.isOpen()) {
            Cursor cursor = db.rawQuery("select _id, name, age from person where _id = ?;", new String[]{id + ""});
            if(cursor != null && cursor.moveToFirst()) {
                int _id = cursor.getInt(0);
                String name = cursor.getString(1);
                int age = cursor.getInt(2);
                db.close();
                return new person(_id, name, age);
            }
            db.close();
        }
        return null;
    }

最后看看我们的测试方法:

        persondao mPersondao = new persondao(this, "zhengwei.db", 1);
        mPersondao.insert(new person(0,"xiaoming", 20));
        mPersondao.insert(new person(0,"zhangsan", 25));
        mPersondao.insert(new person(0,"eeeee", 26));
        List<person> mList = new ArrayList<person>();  
        mList = mPersondao.findall();
        
        for (person mPerson:mList) {
            Log.i(""+mPerson, "testdb");
        }
        mPersondao.upgrade(2, "虎虎");
        person mPerson = new person();
        mPerson  = mPersondao.queryItem(2);
        Log.i(""+mPerson, "testdbfind");


这个是使用基本的sql语句进行操作,当然也可以使用android提供的API实现数据库的增删改查操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值