android 数据库sqlite的使用

本文介绍了如何使用Java和SQLite数据库来记录和管理日常消费数据,包括创建Bean类、数据库帮助类及其方法,以及如何使用这些类进行数据的添加、更新、删除和查询操作。

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

我们在做项目的时候,难免会用到sqlite来保存一些数据,因此,学会sqlite的使用是必不可少的。

想要学会使用sqlite,没有一点sql语言功底是不行的(毕竟是操作数据库)。所以,对sql语言不熟的同学先复习下sql吧!!!

进入正题:


首先先创建一个Bean:EventBean  记得要序列化:


public class EventBean implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * 事件id
	 */
	private int id;
	/**
	 * 日期
	 */
	private String eventDate;
	/**
	 * 早餐
	 */
	private float breakfast;
	/**
	 * 午餐
	 */
	private float lunch;
	/**
	 * 晚餐
	 */
	private float dinner;
	/**
	 * 夜宵
	 */
	private float supper;
	/**
	 * 零食
	 */
	private float snacks;
	/**
	 * 其他
	 */
	private float other;
	/**
	 * 备注
	 */
	private String remarks;
	/**
	 * 天
	 */
	private int day;
	
	public EventBean(int id, String eventDate, float breakfast, float lunch,
			float dinner, float supper, float snacks, float other,
			String remarks, int day) {
		super();
		this.id = id;
		this.eventDate = eventDate;
		this.breakfast = breakfast;
		this.lunch = lunch;
		this.dinner = dinner;
		this.supper = supper;
		this.snacks = snacks;
		this.other = other;
		this.remarks = remarks;
		this.day = day;
	}
	public int getDay() {
		return day;
	}
	public void setDay(int day) {
		this.day = day;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getEventDate() {
		return eventDate;
	}
	public void setEventDate(String eventDate) {
		this.eventDate = eventDate;
	}
	public float getBreakfast() {
		return breakfast;
	}
	public void setBreakfast(float breakfast) {
		this.breakfast = breakfast;
	}
	public float getLunch() {
		return lunch;
	}
	public void setLunch(float lunch) {
		this.lunch = lunch;
	}
	public float getDinner() {
		return dinner;
	}
	public void setDinner(float dinner) {
		this.dinner = dinner;
	}
	public float getSupper() {
		return supper;
	}
	public void setSupper(float supper) {
		this.supper = supper;
	}
	public float getSnacks() {
		return snacks;
	}
	public void setSnacks(float snacks) {
		this.snacks = snacks;
	}
	public float getOther() {
		return other;
	}
	public void setOther(float other) {
		this.other = other;
	}
	public String getRemarks() {
		return remarks;
	}
	public void setRemarks(String remarks) {
		this.remarks = remarks;
	}
	@Override
	public String toString() {
		return "EventBean [id=" + id + ", eventDate=" + eventDate
				+ ", breakfast=" + breakfast + ", lunch=" + lunch + ", dinner="
				+ dinner + ", supper=" + supper + ", snacks=" + snacks
				+ ", other=" + other + ", remarks=" + remarks + "]";
	}

	public EventBean() {
		super();
	}
	
}



接着创建一个DatabaseHelper类。

这是从自己做的demo上摘下来的,用来记录每天的消费,创建了个event表,有属性eventid(事件id),eventdate(日期),breakfast(早餐),lunch(午餐),dinner(晚餐),supper(夜宵),snacks(零食),other(其他),remarks(备注)。

里面有注释,就不一一解释了

public class DatabaseHelper extends SQLiteOpenHelper{
	private static final int DATABASEVERSION = 1;//数据库版本,大于0
	private static final String DATABASENAME = "dailyconsumption.db"; //数据库名称  
	/**
	 * 构造方法
	 * @param context 上下文
	 * 每次创建DatabaseHelper对象时,若本应用无该数据库,则新建数据库并调用onCreate方法;若该数据库已创建则直接使用已存在的数据库且跳过onCreate方法
	 */
	public DatabaseHelper(Context context) {
		super(context, DATABASENAME, null, DATABASEVERSION);
	}
	/**
	 * 创建数据库时调用
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		db.execSQL("CREATE TABLE event (eventid integer primary key autoincrement, eventdate date, breakfast float,lunch float,dinner float,supper floate,snacks floate,other floate,remarks varchar(100))");
	}
	/**
	 * 更新数据库时调用
	 */
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		db.execSQL("DROP TABLE IF EXISTS person");  
		onCreate(db); 
	}
	/**
	 * 添加事件
	 * @param eventBean 
	 */
	public void addEvent(EventBean eventBean){

		//如果要对数据进行更改,就调用此方法得到用于操作数据库的实例,该方法以读和写方式打开数据库  
		SQLiteDatabase db = getWritableDatabase();  
		db.execSQL("insert into event (eventdate,breakfast,lunch,dinner,supper,snacks,other,remarks) values(?,?,?,?,?,?,?,?)",new Object[]{
				eventBean.getEventDate(),
				eventBean.getBreakfast(),
				eventBean.getLunch(),
				eventBean.getDinner(),
				eventBean.getSupper(),
				eventBean.getSnacks(),
				eventBean.getOther(),
				eventBean.getRemarks()
		});
	}
	/**
	 * 更新事件
	 * @param eventBean
	 */
	public void update(EventBean eventBean){ 
		SQLiteDatabase db = getWritableDatabase();  
		db.execSQL("update event set breakfast=? ,lunch = ? ,dinner = ? ,supper = ? ,snacks = ? ,other = ? ,remarks = ?  where eventid=?",   
				new Object[]{
				eventBean.getBreakfast(),
				eventBean.getLunch(),
				eventBean.getDinner(),
				eventBean.getSupper(),
				eventBean.getSnacks(),
				eventBean.getOther(),
				eventBean.getRemarks(),
				eventBean.getId()});  
	} 
	/**
	 * 根据id删除事件
	 * @param id
	 */
	public void delete(Integer id){  
		SQLiteDatabase db = getWritableDatabase();  
		db.execSQL("delete from event where eventid=?", new Object[]{id.toString()});  
	}  
	/**
	 * 根据id查找事件
	 * @param id 事件id
	 * @return bean
	 */
	public EventBean find(Integer id){  
		//如果只对数据进行读取,建议使用此方法  
		SQLiteDatabase db = getReadableDatabase();  
		Cursor cursor = db.rawQuery("select * from event where eventid=?", new String[]{id.toString()});//得到游标  
		if(cursor.moveToFirst()){  
			EventBean bean = new EventBean(
					cursor.getInt(cursor.getColumnIndex("eventid")),
					cursor.getString(cursor.getColumnIndex("eventdate")),
					cursor.getFloat(cursor.getColumnIndex("breakfast")),
					cursor.getFloat(cursor.getColumnIndex("lunch")),
					cursor.getFloat(cursor.getColumnIndex("dinner")),
					cursor.getFloat(cursor.getColumnIndex("supper")),
					cursor.getFloat(cursor.getColumnIndex("snacks")),	
					cursor.getFloat(cursor.getColumnIndex("other")),
					cursor.getString(cursor.getColumnIndex("remarks")));
			return bean;  
		}  
		return null;  
	}  
	/**
	 * 根据日期查找事件
	 * @param date 日期
	 * @return bean
	 */
	public EventBean findByDate(String date){  
		//如果只对数据进行读取,建议使用此方法  
		SQLiteDatabase db = getReadableDatabase();  
		Cursor cursor = db.rawQuery("select * from event where eventdate=?", new String[]{date.toString()});//得到游标  
		if(cursor.moveToFirst()){  
			EventBean bean = new EventBean(
					cursor.getInt(cursor.getColumnIndex("eventid")),
					cursor.getString(cursor.getColumnIndex("eventdate")),
					cursor.getFloat(cursor.getColumnIndex("breakfast")),
					cursor.getFloat(cursor.getColumnIndex("lunch")),
					cursor.getFloat(cursor.getColumnIndex("dinner")),
					cursor.getFloat(cursor.getColumnIndex("supper")),
					cursor.getFloat(cursor.getColumnIndex("snacks")),	
					cursor.getFloat(cursor.getColumnIndex("other")),
					cursor.getString(cursor.getColumnIndex("remarks")));
			return bean;  
		}  
		return null;  
	} 
	/**
	 * 根据要去获取
	 * @param offset 起点
	 * @param maxResult 数量
	 * @return
	 */
    public List<EventBean> getScrollData(Integer offset, Integer maxResult){  
        List<EventBean> events = new ArrayList<EventBean>();  
        SQLiteDatabase db = getReadableDatabase();  
        Cursor cursor = db.rawQuery("select * from event limit ?,?",  
                new String[]{offset.toString(), maxResult.toString()});  
        while(cursor.moveToNext()){  
        	EventBean bean = new EventBean(
					cursor.getInt(cursor.getColumnIndex("eventid")),
					cursor.getString(cursor.getColumnIndex("eventdate")),
					cursor.getFloat(cursor.getColumnIndex("breakfast")),
					cursor.getFloat(cursor.getColumnIndex("lunch")),
					cursor.getFloat(cursor.getColumnIndex("dinner")),
					cursor.getFloat(cursor.getColumnIndex("supper")),
					cursor.getFloat(cursor.getColumnIndex("snacks")),	
					cursor.getFloat(cursor.getColumnIndex("other")),
					cursor.getString(cursor.getColumnIndex("remarks")));
        	events.add(bean);  
        }  
        cursor.close();  
        return events;  
    }  
	/**
	 * 根据日起获取
	 * @param offset 起点
	 * @param maxResult 数量
	 * @return
	 */
    public List<EventBean> getScrollDataByDate(String begin, String end){  
        List<EventBean> events = new ArrayList<EventBean>();  
        SQLiteDatabase db = getReadableDatabase();  
        Cursor cursor = db.rawQuery("select * from event where eventdate BETWEEN ? and ?",  
                new String[]{begin, end});  
        while(cursor.moveToNext()){  
        	EventBean bean = new EventBean(
					cursor.getInt(cursor.getColumnIndex("eventid")),
					cursor.getString(cursor.getColumnIndex("eventdate")),
					cursor.getFloat(cursor.getColumnIndex("breakfast")),
					cursor.getFloat(cursor.getColumnIndex("lunch")),
					cursor.getFloat(cursor.getColumnIndex("dinner")),
					cursor.getFloat(cursor.getColumnIndex("supper")),
					cursor.getFloat(cursor.getColumnIndex("snacks")),	
					cursor.getFloat(cursor.getColumnIndex("other")),
					cursor.getString(cursor.getColumnIndex("remarks")));
        	events.add(bean);  
        }  
        cursor.close();  
        return events;  
    } 
	/**
	 * 得到总数量
	 * @return
	 */
    public long getCount() {  
        SQLiteDatabase db = getReadableDatabase();  
        Cursor cursor = db.rawQuery("select count(*) from event", null);  
        cursor.moveToFirst();  
        return cursor.getLong(0);  
    } 

}


里面只列举了几个用到的方法,可以根据情况添加。



最后就是使用它了

:添加一条数据:

在Activity中先new一个DatabaseHelper,然后再用这个对象进行操作:

DatabaseHelper dbHelper = new DatabaseHelper(this);
//new一个对象,赋值 
EventBean bean = new EventBean();
bean.setEventDate(date);
bean.setBreakfast(breakfast);
bean.setLunch(lunch);
bean.setDinner(dinner);
bean.setSupper(supper);
bean.setSnacks(snacks);
bean.setRemarks(remarks);
bean.setOther(other);
dbHelper.addEvent(bean);


这样就完成一次添加数据操作了!!



添加后想查看数据库中是否有已经添加的数据?

:查看所有数据:

首先还是要得到DatabaseHelper的对象,要是之前创建了直接使用就可以了。

DatabaseHelper dbHelper = new DatabaseHelper(this);
for (int i = 0; i < CommonData.maxDay; i++) {
			Log.i("dbtest", list.get(i).toString());
		}


这样就能在Log中看到所有插入的内容。



转载请说明出处


若有错误之处,感谢指出




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值