android SQLite数据库2
16lz
2021-01-23
今天介绍一下查询的写法。
比如说,数据库创建时产生了一张表格
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();
}
比如说,数据库创建时产生了一张表格
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
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
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 创建SQLite数据库(一)
- Android利用wireshark抓取网络数据包
- Android 中数据库查询方法 query() 中的 selectionArgs 的用法
- Android 列表数据写入到本地Excel文件(包括图片)
- android中的sqlit3数据库进行手机应用软件开发(自写的一个财务管
- 6.1、Android中从Internet获取数据
- 《Android开发从零开始》——25.数据存储(4)
- Android系统配置数据库注释(settings.db)
- Android中不同应用间实现SharedPreferences数据共享