android SQLite数据库2

本文介绍了使用SQL进行数据查询的方法,包括通过ID查询单条记录、查询所有记录、分页查询以及查询表中记录总数等操作。此外还讨论了如何通过事务确保数据库操作的完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天介绍一下查询的写法。
比如说,数据库创建时产生了一张表格
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<Person> persons = new ArrayList<Person>();
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<Person> persons = new ArrayList<Person>();
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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值