Android SQLite 使用 SQL 语句操作数据库

如果你已经学会了 SQL ,会写相关的 SQL 语句,不想用 Android 提供的这些 API,那么可以直接使用 SQLiteDatabase 给我们提供的相关方法

方法 说明
execSQL(SQL,Object[]) 使用带占位符的 SQL 语句,这个是执行修改数据库内容的 SQL 语句用的
rawQuery(SQL,Object[]) 使用带占位符的 SQL 查询操作

这两个方法都会返回一个 Cursor 对象

Curosr 相关属性和如下

Cursor 对象有点类似于 JDBC 中的 ResultSet 结果集,提供一下方法移动查询结果的记录指针

方法 说明
move(offset) 指定向上或者向下移动的行数,整数表示向下移动;负数表示向上移动!
moveToFirst() 指针移动到第一行,成功返回true,也说明有数据
moveToLast() 指针移动到最后一样,成功返回true;
moveToNext() 指针移动到下一行,成功返回true,表明还有元素!
moveToPrevious() 移动到上一条记录
getCount() 获得总得数据条数
isFirst() 是否为第一条记录
isLast() 是否为最后一项
moveToPosition(int) 移动到指定行

Android 使用 SQL 语句操作数据库

插入数据

public void save(Person p)
{
    SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
    db.execSQL("INSERT INTO person(name,phone) values(?,?)",
                new String[]{p.getName(),p.getPhone()});
}

删除数据

public void delete(Integer id)
{
    SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
    db.execSQL("DELETE FROM person WHERE personid = ?",
                new String[]{id});
}

修改数据

public void update(Person p)
{
    SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
    db.execSQL("UPDATE person SET name = ?,phone = ? WHERE personid = ?",
        new String[]{p.getName(),p.getPhone(),p.getId()});
}

查询数据

public Person find(Integer id)
{
    SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
    Cursor cursor =  db.rawQuery("SELECT * FROM person WHERE personid = ?",
            new String[]{id.toString()});
    //存在数据才返回true
    if(cursor.moveToFirst())
    {
        int personid = cursor.getInt(cursor.getColumnIndex("personid"));
        String name = cursor.getString(cursor.getColumnIndex("name"));
        String phone = cursor.getString(cursor.getColumnIndex("phone"));
        return new Person(personid,name,phone);
    }
    cursor.close();
    return null;
}

数据分页

public List<Person> getScrollData(int offset,int maxResult)
{
    List<Person> person = new ArrayList<Person>();
    SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
    Cursor cursor =  db.rawQuery("SELECT * FROM person ORDER BY personid ASC LIMIT= ?,?",
        new String[]{String.valueOf(offset),String.valueOf(maxResult)});
    while(cursor.moveToNext())
    {
        int personid = cursor.getInt(cursor.getColumnIndex("personid"));
        String name = cursor.getString(cursor.getColumnIndex("name"));
        String phone = cursor.getString(cursor.getColumnIndex("phone"));
        person.add(new Person(personid,name,phone)) ;
    }
    cursor.close();
    return person;
}

查询记录数

public long getCount()
{
    SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
    Cursor cursor =  db.rawQuery("SELECT COUNT (*) FROM person",null);
    cursor.moveToFirst();
    long result = cursor.getLong(0);
    cursor.close();
    return result;      
}

获得 Cursor 中数据的条数

首先我们要使用 SQL 语句 SELECT * FROM person 来查询数据,然后再使用 cursor.getCount() 方法获得数据的条数

强烈建议把 * 换成某个具体的字段

public long getRsCount()
{
    SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
    Cursor cursor =  db.rawQuery("SELECT person FROM person",null);
    long count = cursor.getCount();
    cursor.close();
    return count;      
}

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.