最近在学习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;
}
}
(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(),创建一个可读写的实例
③使用SQLiteDatabase类的insert()方法,添加一条数据记录到数据表,并返回该条数据记录所处的位置ID