基于Android SQLiteOpenHelper && CRUD 的使用

2016-02-19 10:09 1 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - 编程语言 】

代码如下:

public class DBOpenHelper extends SQLiteOpenHelper {
 // 类没有实例化,不能用作父类构造器的参数,必须声明为静态
 public DBOpenHelper(Context context, int version) {
  super(context, "SQLite.db", null, version);
  // 第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null代表使用系统默认的游标工厂;
 }
 @Override
 public void onCreate(SQLiteDatabase db) {// 数据库第一次被创建的时候被调用,最开始创建数据库时赋的版本号值是0
  // SQLiteDatabase用于生成数据库表;数据库存放路径:package name/databases/
  db.execSQL("create table person(personid integer primary key autoincrement, name varchar(20))");
 }
 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// 版本号升级的时候进行调用;如果数据库不存在就不调用
  db.execSQL("alter table person add phone varchar(12) null");// 往表中增加一列
 }
}
DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext(), 1);
dbOpenHelper.getWritableDatabase();// 会create数据库表or/open数据库表

public class PersonService {
 private DBOpenHelper dbOpenHelper;
 public PersonService(Context context) {
  super();
  this.dbOpenHelper = new DBOpenHelper(context, 2);
 }
 public void save(Person person) {
  SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  // SQLiteDatabase db2 = dbOpenHelper.getWritableDatabase();有缓存的功能,同一个Helper用此方法得到的对象为db;
  db.execSQL("insert into person(name,phone) values(?,?)", new Object[] {person.getName(), person.getPhone() });
 }
 public void delete(Integer id) {
  SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  db.execSQL("delete from person where personid=?", new Object[] { id });
 }
 public void update(Person person) {
  SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  db.execSQL("update person set name=?,phone=? where personid=?",new Object[] { person.getName(), person.getPhone(),person.getId() });
 }
 public Person find(Integer id) {
  SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
  // 如果数据库磁盘空间未满,得到的实例即为getWritableDatabase()得到的对象;因为此方法会调用getWritableDatabase方法;
  Cursor cursor = db.rawQuery("select * from person where personid=?",new String[] { id.toString() });
  if (cursor.moveToFirst()) {
   int personid = cursor.getInt(cursor.getColumnIndex("personid"));
   String name = cursor.getString(cursor.getColumnIndex("name"));
   String phone = cursor.getString(cursor.getColumnIndex("phone"));
   return new Person(personid, name, phone);
  }
  cursor.close();
  return null;
 }
 /*
  * 获取分页数据
  */
 public List getScollData(int offest, int maxResult) {
  List persons = new ArrayList();
  SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
  Cursor cursor = db.rawQuery("select * from person order by personid asc limit ?,?",new String[] { String.valueOf(offest),String.valueOf(maxResult) });
  while (cursor.moveToNext()) {
   int personid = cursor.getInt(cursor.getColumnIndex("personid"));
   String name = cursor.getString(cursor.getColumnIndex("name"));
   String phone = cursor.getString(cursor.getColumnIndex("phone"));
   persons.add(new Person(personid, name, phone));
  }
  cursor.close();
  return persons;
 }
 public long getCount() {
  SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
  Cursor cursor = db.rawQuery("select count(*) from person", null);
  cursor.moveToFirst();
  long result = cursor.getLong(0);
  return result;
 }
}

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

public class OtherPersonService {
 private DBOpenHelper dbOpenHelper;
 public OtherPersonService(Context context) {
  super();
  this.dbOpenHelper = new DBOpenHelper(context, 2);
 }
 public void save(Person person) {
  SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  ContentValues values = new ContentValues();// ContentValues 专门用于保存字段的值
  values.put("name", person.getName());
  values.put("phone", person.getPhone());
  db.insert("person", null, values);// 第三个参数为字段值,第二个参数为空值字段,如果第三个参数为null
 }
 public void delete(Integer id) {
  SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  db.delete("person", "personid=?", new String[] { id.toString() });
 }
 public void update(Person person) {
  SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  ContentValues values = new ContentValues();
  values.put("name", person.getName());
  values.put("phone", person.getPhone());
  db.update("person", values, "personid=?", new String[] { person.getId().toString() });
 }
 public Person find(Integer id) {
  SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
  Cursor cursor = db.query("person", null, "personid=?",new String[] { id.toString() }, null, null, null);
  if (cursor.moveToFirst()) {
   int personid = cursor.getInt(cursor.getColumnIndex("personid"));
   String name = cursor.getString(cursor.getColumnIndex("name"));
   String phone = cursor.getString(cursor.getColumnIndex("phone"));
   return new Person(personid, name, phone);
  }
  cursor.close();
  return null;
 }
 /*
  * 获取分页数据
  */
 public List getScollData(int offest, int maxResult) {
  List persons = new ArrayList();
  SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
  Cursor cursor = db.query("person", null, null, null, null, null,"personid asc", offest + "," + maxResult);
                //db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit);
  while (cursor.moveToNext()) {
   int personid = cursor.getInt(cursor.getColumnIndex("personid"));
   String name = cursor.getString(cursor.getColumnIndex("name"));
   String phone = cursor.getString(cursor.getColumnIndex("phone"));
   persons.add(new Person(personid, name, phone));
  }
  cursor.close();
  return persons;
 }
 public long getCount() {
  SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
  Cursor cursor = db.query("person", new String[] { "count(*)" }, null, null, null, null, null);
                //db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
  cursor.moveToFirst();
  long result = cursor.getLong(0);
  return result;
 }
}

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

来源:https://www.tulaoshi.com/n/20160219/1593563.html

延伸阅读
标签: 瑜伽 养生 健康
根据至尊主的亲传、权威经典的结论和圣人的证悟,觉悟真理分三阶段:梵觉、超灵和博伽梵梵觉至尊主非人格的层面,其中又分为个不同的层次,包括:道教的“道”、佛教的“涅槃”、锡克教的“融入光音”、印度教(图老师整理)的“梵我合”等。证悟超灵是完美的瑜伽师在三摩地中亲证至尊主的扩展--超灵的存在。觉悟真理的最高层面是面谒至尊人...
标签: Web开发
随着ADOBE CS3系列产品的亮相,我们最关注的Dreamweaver CS3也获得了最新的消息。 首先先来看看传统的Dreamweaver彩蛋是否还在。 第一个Dreamweaver彩蛋就是: 1,在网页中插入一张图像; 2,打开属性面板,在图像的缩略图上双击鼠标+Ctrl键 这里看到的头像即为开发Dreamweaver的相关人员。 第二个Dreamweaver彩蛋就是: 1,打开属性...
标签: 养生 健康
适量饮茶,好处很多。如果饮茶过浓,饮茶时间,方法不合适,不同体质的人选用一样的饮茶方法,或用茶水送部分药等,不仅是起不到好作用,反而于身体不利。自古来,我国人民对喝茶是很讲究。在饮茶生活中对时间、浓淡、冷热、新陈以及不同的人如何饮茶等都有丰富经验。前人总结不同时间、不同情况下饮茶的作用是不一样的,如早茶使人心情愉...
标签: 瑜伽 养生 健康
     有很多运动员、舞者或者是身体局部需要康复的人,都会做某些瑜伽动作来保养或者是改善身体状况。照理说,这种动作很慢,不激烈的运动,应该不像跑步、打球那样,会有运动伤害才是。但瑜伽姿势不当,一样会受伤。它受伤的范围从肌肉拉伤、韧带拉伤、跌伤…都有。 做一个运动,没有达到效果就罢了,但是千万要保护...
标签: 宝宝
宝宝自己玩:0-3岁的独立游戏 如果有一天,你发现宝宝一个人在房间里玩得不亦乐乎,你应该为他感到高兴,这是宝宝独自游戏的开始。千万别打破这个小小的私人空间,让他充分享受独自游戏的机会和乐趣。放手让宝宝自己玩独自游戏是宝宝自立的萌芽。爸爸妈妈要给孩子独立的私人空间和时间,放手让他们自己玩。这并不等于说父母可以对宝宝大撒把...

经验教程

833

收藏

94
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部