W e S D
0 1

eatwhatApp开发实战(五)

  上次我们为eatwhat添加了了删除功能和dialog对话框的介绍,今天我们来使用SQLite进行本地数据存储。

  首先,我们定义一个SQL辅助类ShopInfoOpenHelper继承SQLiteOpenHelper。

public class ShopInfoOpenHelper extends SQLiteOpenHelper {

	public ShopInfoOpenHelper(Context context, String name,
			CursorFactory factory, int version,
			DatabaseErrorHandler errorHandler) {
		super(context, name, factory, version, errorHandler);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onCreate(SQLiteDatabase arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
		// TODO Auto-generated method stub

	}

}

  在构造方法ShopInfoOpenHelper中配置上下文环境、数据库名称、版本号游标工厂默认设置null。

  

	public ShopInfoOpenHelper(Context context) {
		
		super(context, "shop_info.db", null, 1);
	}

  在OnCreate中创建表shopinfo:主键_id,字段shopName。

	public void onCreate(SQLiteDatabase db) {

		db.execSQL("create table shopinfo(_id integer primary key autoincrement,shopName char(20))");
	}

  MainActivity中声明数据库和辅助类。在init()方法中声明createOrOpenDataBase()方法。

	// 数据库创建
	private SQLiteDatabase db;
	// openHelper辅助类
	private ShopInfoOpenHelper mOpenHelper;

  该方法体内初始化辅助类openhelper,创建或者打开数据库:

	private void createOrOpenDataBase() {
		
		mOpenHelper = new ShopInfoOpenHelper(MainActivity.this);
		
		//如果数据库不存在 则创建可读写的数据库 ,如果创建了 则直接打开
		db = mOpenHelper.getWritableDatabase();		
	}

  声明方法addLocalData(Shop shop):

	private void addLocalData(Shop shop) {
		
		//存储的机制,只能存储基本类型的数据,像string、int之类。
		ContentValues values = new ContentValues();
		values.put("shopName",shop.getName());
         //shopinfo中插入数据 db.insert("shopinfo", null, values); }

  在添加按钮的逻辑中调用此方法:

  // List shop添加店名
  Shop shop = new Shop(addName);
  // 添加新实例化的shop对象
  shopList.add(shop);
  // 刷新listview
  shopAdapter.notifyDataSetChanged();
  // 添加到本地数据
  addLocalData(shop);

  测试结果,真机测试需ROOT后通过rootexplorer等软件进行查找,路径:data/data/包名/databases/数据库名称/表名

 

 

 

posted @ 2015-12-20 22:31  SD.Team  阅读(268)  评论(0编辑  收藏  举报