当然,你可能已经学过SQL,会写相关的SQL语句,而且不想用Android提供的这些API,你可以直接使用SQLiteDatabase给我们提供的相关方法:
- execSQL(SQL,Object[]):使用带占位符的SQL语句,这个是执行修改数据库内容的sql语句用的
- rawQuery(SQL,Object[]):使用带占位符的SQL查询操作另外前面忘了介绍下Curosr这个东西以及相关属性,这里补充下:——Cursor对象有点类似于JDBC中的ResultSet,结果集!使用差不多,提供一下方法移动查询结果的记录指针:
- move(offset):指定向上或者向下移动的行数,整数表示向下移动;负数表示向上移动!
- moveToFirst():指针移动到第一行,成功返回true,也说明有数据
- moveToLast():指针移动到最后一样,成功返回true;
- moveToNext():指针移动到下一行,成功返回true,表明还有元素!
- moveToPrevious():移动到上一条记录
- getCount( )获得总得数据条数
- isFirst():是否为第一条记录
- isLast():是否为最后一项
- moveToPosition(int):移动到指定行
使用代码示例:
1.插入数据:
public void save(Person p)
{
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
db.execSQL("INSERT INTO person(name,phone) values(?,?)",
new String[]{p.getName(),p.getPhone()});
}
2.删除数据:
public void delete(Integer id)
{
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
db.execSQL("DELETE FROM person WHERE personid = ?",
new String[]{id});
}
3.修改数据:
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()});
}
4.查询数据:
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;
}
5.数据分页:
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;
}
6.查询记录数:
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;
}
PS:除了上面获取条数的方法外还可以使用cursor.getCount()方法获得数据的条数,但是SQL语句要改改!比如SELECT * FROM person;
转载自:
http://www.runoob.com/w3cnote/android-tutorial-sqlite-intro.html