android SQLite数据库2

今天介绍一下查询的写法。
比如说,数据库创建时产生了一张表格
db.execSQL("CREATE TABLE IF NOT EXISTS person (perid integer primary key, name varchar


(20), age INTEGER)");
查询一条语句时,如果知道唯一的id标识码,可以
Cursor cursor = db.rawQuery(“select name,age from person Where perid = ?”, new String


[perid+""]);  
Person p;
while (cursor.moveToNext()) {  
  p = new Person();
  p.setId(perid);  
  p.setName(cursor.getString(0));//获取第二列的值  
  p.setAge(cursor.getInt(1)));//获取第三列的值 
}  
如此,就获取了数据,同时赋值给对象p了。


如果要查询所有语句,写法类似上面
Cursor cursor = db.rawQuery(“select perid,name,age from person ”, null);  
List persons = new ArrayList();
while (cursor.moveToNext()) {  
  Person  p = new Person(cursor.getInt(0),cursor.getString(1),cursor.getInt(2));
  persons.add(p);
}  
返回的persons集合对象,则是所有的数据语录的集合。


如果查询的是一段数据的话,需要知道开始和结束的位置,通常都是按照分页计算,一般需要知道开始


的页数,和每页的数据量
String start = (pageNum-1)*pageSize+"";
String count = pageSize+"";
Cursor cursor = db.rawQuery(“select perid,name,age from person LIMIT ?,? ”, new String


[start,count]);  
List persons = new ArrayList();
while (cursor.moveToNext()) {  
  Person  p = new Person(cursor.getInt(0),cursor.getString(1),cursor.getInt(2));
  persons.add(p);
}
原理一直,都是通过游标控制指针,只是sql语句不一样。


如果要查询数据库中的表格一共有多少条数据,可以
Cursor cursor = db.rawQuery(“select COUNT(*) from person , null);  
cursor.moveToNext()  
int count = cursor.getInt(0);
 
数据库中还有一个事务的概念,比如从A账户往B账户转账,需要A减去300,B加上300,假如操作到一半


,突然断电了,或死机了,怎么办?A的钱少了,B的钱却没多,这要骂娘的。事务就起这个作用,保证


程序功能操作的完整性。
比如,上述例子中A把age借给了B(希望可以借年龄)


int from =A;int to =B;int amountAge = 5;
try{
db.beginTransaction();
db.execSQL(“UPDATE person SET age = age-? WHERE perid =?”, new Object[amountAge,from]); 
db.execSQL(“UPDATE person SET age = age+? WHERE perid =?”, new Object[amountAge,to]); 
db.setTransactionSuccessful();
}finally{
db.endTransaction();
}

你可能感兴趣的:(Android,sql,Android,知识)