• 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/数据库名称/表名

     

  • 相关阅读:
    通过反射获取Android通知栏高度
    Android 的EditText实现不可编辑
    Android 代码混淆、第三方平台加固加密、渠道分发 完整教程(图文)
    eclipse、myeclipse,svn插件subclipse 忘记密码的解决方法(win7、win8、xp)
    Eclipse 基于接口编程的时候,快速跳转到实现类的方法(图文)
    WIN7、WIN8 右键在目录当前打开命令行Cmd窗口(图文)
    eclipse,myeclipse开发环境下,maven远程部署到tomcat7服务器(图文)
    python之路——博客目录
    生成器和协程 —— 你想知道的都在这里了
    python3.7导入gevent模块报错的解决方案
  • 原文地址:https://www.cnblogs.com/superdo/p/5062089.html
Copyright © 2020-2023  润新知