android sqlite 源码分析,Android SQLite数据库增删改查操作的案例分析

package com.ljq.db;

import java.util.ArrayList;

import java.util.List;

import android.content.Context;

import android.database.Cursor;

import com.ljq.domain.Person;

public class PersonService {

private DBOpenHelper dbOpenHelper = null;

/**

* 构造函数

*

* 调用getWritableDatabase()或getReadableDatabase()方法后,会缓存SQLiteDatabase实例;

* 因为这里是手机应用程序,一般只有一个用户访问数据库,所以建议不关闭数据库,保持连接状态。

* getWritableDatabase(),getReadableDatabase的区别是当数据库写满时,调用前者会报错,调用后者不会,

* 所以如果不是更新数据库的话,最好调用后者来获得数据库连接。

*

* 对于熟悉SQL语句的程序员最好使用exeSQL(),rawQuery(),因为比较直观明了

*

* @param context

*/

public PersonService(Context context){

dbOpenHelper = new DBOpenHelper(context);

}

public void save(Person person){

dbOpenHelper.getWritableDatabase().execSQL("insert into person(name, phone) values (?, ?)",

new Object[]{person.getName(), person.getPhone()});

}

public void update(Person person){

dbOpenHelper.getWritableDatabase().execSQL("update person set name=?, phone=? where id=?",

new Object[]{person.getName(), person.getPhone(), person.getId()});

}

public void delete(Integer... ids){

if(ids.length>0){

StringBuffer sb = new StringBuffer();

for(Integer id : ids){

sb.append("?").append(",");

}

sb.deleteCharAt(sb.length() - 1);

dbOpenHelper.getWritableDatabase().execSQL("delete from person where id in ("+sb+")", (Object[])ids);

}

}

public Person find(Integer id){

Cursor cursor = dbOpenHelper.getReadableDatabase().rawQuery("select id, name, phone from person where id=?",

new String[]{String.valueOf(id)});

if(cursor.moveToNext()){

int personid = cursor.getInt(0);

String name = cursor.getString(1);

String phone = cursor.getString(2);

return new Person(personid, name, phone);

}

return null;

}

public long getCount(){

Cursor cursor = dbOpenHelper.getReadableDatabase().query("person",

new String[]{"count(*)"}, null,null,null,null,null);

if(cursor.moveToNext()){

return cursor.getLong(0);

}

return 0;

}

/**

* 分页

*

* @param startResult 偏移量,默认从0开始

* @param maxResult 每页显示的条数

* @return

*/

public List getScrollData(int startResult, int maxResult){

List persons = new ArrayList();

//Cursor cursor = dbOpenHelper.getReadableDatabase().query("person", new String[]{"id, name, phone"},

//        "name like ?", new String[]{"%ljq%"}, null, null, "id desc", "1,2");

Cursor cursor = dbOpenHelper.getReadableDatabase().rawQuery("select * from person limit ?,?",

new String[]{String.valueOf(startResult), String.valueOf(maxResult)});

while(cursor.moveToNext()) {

int personid = cursor.getInt(0);

String name = cursor.getString(1);

String phone = cursor.getString(2);

persons.add(new Person(personid, name, phone));

}

return persons;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Android Studio中进行增删改查操作源码主要涉及到使用数据库,以SQLite为例。 1. 增加数据(Create): - 创建一个SQLiteOpenHelper类的子类,用于打开和管理数据库。 - 在该子类的onCreate方法中,使用SQL语句创建表格。 - 在需要插入数据的地方,通过调用getWritableDatabase()方法获取可写的数据库对象。 - 使用ContentValues对象来存储要插入的数据。 - 调用insert()方法将数据插入到数据库中。 2. 删除数据(Delete): - 在需要删除数据的地方,通过调用getWritableDatabase()方法获取可写的数据库对象。 - 使用delete()方法,指定要删除数据的表格名称和条件。 3. 修改数据(Update): - 在需要修改数据的地方,通过调用getWritableDatabase()方法获取可写的数据库对象。 - 使用ContentValues对象来存储要修改的数据。 - 调用update()方法,指定要更新数据的表格名称、新数据和条件。 4. 查询数据(Retrieve): - 在需要查询数据的地方,通过调用getReadableDatabase()方法获取可读的数据库对象。 - 使用query()方法,指定要查询的表格名称、需要返回的列、条件等参数。 - 查询结果返回一个Cursor对象,可以遍历获取查询结果。 需要注意的是,在进行数据库操作时,需要在Android Manifest文件中声明对数据库的权限。 以上是基本的增删改查操作源码Android Studio中的实现方式,具体实现还涉及到使用Java语言的相关知识点,建议还需要进一步学习相关资料深入理解和掌握。 ### 回答2: 在Android Studio中进行增删改查操作源码主要涉及以下几个关键步骤: 1. 增加数据:通过编写数据库的插入语句,使用SQLiteDatabase的insert()方法来执行插入操作。首先,需要创建一个ContentValues对象并使用其put()方法来添加要插入的数据。然后,调用SQLiteDatabase的insert()方法,传入表名和ContentValues对象,执行插入操作。 2. 删除数据:同样地,通过编写数据库的删除语句,使用SQLiteDatabase的delete()方法来执行删除操作。调用SQLiteDatabase的delete()方法,传入表名和条件,执行删除操作。 3. 修改数据:通过编写数据库的更新语句,使用SQLiteDatabase的update()方法来执行更新操作。同样,在创建ContentValues对象时,使用其put()方法来添加要更新的数据。然后,调用SQLiteDatabase的update()方法,传入表名、ContentValues对象和条件,执行更新操作。 4. 查询数据:通过编写数据库的查询语句,使用SQLiteDatabase的query()方法来执行查询操作。调用SQLiteDatabase的query()方法,传入表名、要查询的列名、条件等参数,执行查询操作。返回的结果是一个Cursor对象,通过Cursor对象可以遍历查询结果。 在具体的实现过程中,还需要注意数据库的打开与关闭操作。可以使用SQLiteDatabase的getWritableDatabase()方法来获取可写的数据库,使用完后需要调用close()方法关闭数据库。 以上是在Android Studio中增删改查的基本操作源码概述,具体实现还需要根据应用的需要进行调整和优化。 ### 回答3: 在Android Studio中进行增删改查操作源码实现主要涉及以下几方面的内容。 1. 增加数据: 可以通过编写适当的代码来实现向数据库中插入新数据的功能。在Android Studio中,可以使用SQLiteOpenHelper类来创建和管理数据库。使用ContentValues类来构建要插入的数据对象,并通过SQLiteDatabase类的insert()方法将数据插入到数据库中。 2. 删除数据: 同样地,可以使用SQLiteDatabase类的delete()方法来删除数据库中的数据。可以根据特定的条件构建删除语句,并使用delete()方法执行删除操作。 3. 修改数据: 在修改数据时,可以使用SQLiteDatabase类的update()方法。可以根据需要构建更新语句,并通过update()方法执行更新操作。 4. 查询数据: 如果需要查询数据库中的数据,可以使用SQLiteDatabase类的query()方法。可以根据需要构建查询语句,并使用query()方法执行查询操作。查询结果将返回一个Cursor对象,可以从中读取查询结果。 需要注意的是,在进行增删改查操作时,需要确保已经获取到正确的数据库实例,并且已经正确打开了数据库连接。同时还需要注意异常处理,以确保代码的健壮性和可靠性。 总之,在Android Studio中实现增删改查操作源码主要依赖于Android提供的SQLite数据库相关类,通过组合和使用这些类的方法,可以灵活地实现各种数据库操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值