您的位置:首页 > 移动开发 > Android开发

android 数据库sqlite的使用

2015-12-11 17:21 651 查看
我们在做项目的时候,难免会用到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中看到所有插入的内容。

转载请说明出处

若有错误之处,感谢指出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息