最近在学习Android移动应用开发,按照书上的案例进行学习,并将一些数据库的操作流程进行整理归纳,若有错误,请大牛指正。由于Android的数据库可视化操作需要下载插件而且收费,所以所有对数据库的操作只能通过代码进行。

包的创建如下图所示:



数据库的最开始操作,便是创建数据表,这样才能存入关联数据。由于要使用自定义的一些功能,于是我继承基类SQLiteOpenHelper,具体代码如下:(MyHelper.java)

public class MyHelper extends SQLiteOpenHelper {    public MyHelper (Context context){        super(context, "littlefarmer.db", null, 3);    }        public void onCreate(SQLiteDatabase db){    //创建表        System.out.println("onCreate");        db.execSQL("create table products (id INTEGER PRIMARY KEY, " +    //序号                                              "name VARCHAR(20), " +           //农作物名称                                              "status VARCHAR(20), " +        //农作物状态                                              "distribution VARCHAR(2))");   //种植区域    }    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){    //更新表        System.out.println("onUpgrade");    }    public  void onDelete(SQLiteDatabase db){    //删除表        System.out.println("onDelete");        db.execSQL("drop table products");    }}
(1)创建数据库

构造方法MyHelper():使用super()构造父类,父类的构造方法为SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version),总共4个参数。第1参数由调用构造方法的页面给入;第2参数为创建的数据库名称;第3参数通常为null;第4参数为版本号,最小为1。

(2)创建数据表/删除数据表

创建表格时,调用SQLiteDatabase类的execSQL()方法执行SQL语句创建数据表。删除同创建。


因为需要对数据进行交互和暂存,所以创建了bean包用于数据的交互。具体代码如下所示:(products.java)

public class products {    private long id;    private String name;    private String status;    private String distribution;    public products(long id, String name, String status, String distribution) {        super();        this.id = id;        this.name = name;        this.status = status;        this.distribution = distribution;    }    public  products(String name, String status, String distribution){        super();;        this.name = name;        this.status = status;        this.distribution = distribution;    }    public products() {        super();    }    public String toString(){        return "[序号:" + id + ",农作物名称:" + name + ",农作物状态:" + status + ",种植区域:" + distribution + "]";    }    public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getStatus() {        return status;    }    public void setStatus(String status) {        this.status = status;    }    public String getDistribution() {        return distribution;    }    public void setDistribution(String distribution) {        this.distribution = distribution;    }}



准备工作做完之后,便可以对具体的数据操作(增删改查)进行编写了:(productsdao.java)

(1)获取数据库

 private MyHelper helper;    public productsDao(Context context){        //创建Dao时,创建Helper        helper = new MyHelper(context);    }


(2)编写具体数据操作(以insert为例)

 public void insert(products products){        //获取数据库对象        SQLiteDatabase db = helper.getWritableDatabase();        //用来装载要插入的数据的Map<列名,列值>        ContentValues values = new ContentValues();        values.put("name",products.getName());        values.put("status",products.getStatus());        values.put("distribution",products.getDistribution());        //向products表插入数据valuse        long id = db.insert("products", null, values);        products.setId(id);        db.close();    }
①获取数据库对象——通过之前获取的数据库helper,使用getWritableDatabase(),创建一个可读写的实例
②创建ContentValues类的对象存储需要插入的数据

③使用SQLiteDatabase类的insert()方法,添加一条数据记录到数据表,并返回该条数据记录所处的位置ID



更多相关文章

  1. android MVC结构探讨
  2. Android文档(三)-数据存储
  3. Android数字签名的创建
  4. Android中SQLite应用详解
  5. android中Intent传值与Bundle传值详解
  6. Android开发教程02:Android四大组件简介
  7. (三)Android数据结构学习之队列
  8. android中导入数据
  9. mybatisplus的坑 insert标签insert into select无参数问题的解决

随机推荐

  1. 第三方应用获得system权限
  2. 总结了近百个Android优秀开源项目,覆盖And
  3. Android 和 iOS 各有千秋
  4. 9102年了,还不知道Android为什么卡?
  5. Android(安卓)Handler机制之循环消息队列
  6. Android 的线程跟线程池
  7. ionic---关于android和ios蓝牙的使用--以
  8. Android 组件样式定制详解
  9. 解读Android LOG机制的实现:(5)获取LOG的应
  10. android设备修改默认桌面为自定义应用