数据库的初始化放在Application,且必须提供获取数据库的方法,使得在应用程序的任何地方都可以直接获取数据库,并操作数据库,不然重复的获取与释放只能增加内存无谓的消耗
首先:修改AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
android:name=".AppApplication"
Application.java
package com.snow.myapplication; import android.app.Application; import org.xutils.DbManager; import org.xutils.x; /** * Created by snow on 2016/4/18. */ public class AppApplication extends Application { private DbManager.DaoConfig daoConfig; public DbManager.DaoConfig getDaoConfig() { return daoConfig; } @Override public void onCreate() { super.onCreate(); x.Ext.init(this);//Xutils初始化 daoConfig = new DbManager.DaoConfig() .setDbName("snow_db")//创建数据库的名称 .setDbVersion(1)//数据库版本号 .setDbUpgradeListener(new DbManager.DbUpgradeListener() { @Override public void onUpgrade(DbManager db, int oldVersion, int newVersion) { // TODO: ... // db.addColumn(...); // db.dropTable(...); // ... } });//数据库更新操作 } }
Child.java
package com.snow.myapplication; import org.xutils.DbManager; import org.xutils.db.annotation.Column; import org.xutils.db.annotation.Table; import org.xutils.ex.DbException; /** * Author: wyouflf * Date: 13-7-29 * Time: 下午5:04 */ @Table(name = "child") public class Child { @Column(name = "id", isId = true) private int id; @Column(name = "name") private String name; @Column(name = "email") private String email; @Column(name = "parentId" /*, property = "UNIQUE"//如果是一对一加上唯一约束*/) private long parentId; // 外键表id // 这个属性被忽略,不存入数据库 private String willIgnore; @Column(name = "text") private String text; public Parent getParent(DbManager db) throws DbException { return db.findById(Parent.class, parentId); } public long getParentId() { return parentId; } public void setParentId(long parentId) { this.parentId = parentId; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getWillIgnore() { return willIgnore; } public void setWillIgnore(String willIgnore) { this.willIgnore = willIgnore; } public String getText() { return text; } public void setText(String text) { this.text = text; } @Override public String toString() { return "Child{" + "id=" + id + ", name='" + name + '\'' + ", email='" + email + '\'' + ", parentId=" + parentId + ", willIgnore='" + willIgnore + '\'' + ", text='" + text + '\'' + '}'; } }
MainActivity.java
package com.snow.myapplication; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import org.xutils.DbManager; import org.xutils.ex.DbException; import org.xutils.x; import java.util.List; public class MainActivity extends AppCompatActivity { private AppApplication appApplication; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); appApplication=new AppApplication(); DbManager db = x.getDb(appApplication.getDaoConfig()); Child child=new Child(); child.setName("小黑"); child.setEmail("gmaillove@163.com"); try { db.save(child); } catch (DbException e) { e.printStackTrace(); } try { //List<Child> lyjPersons=db.selector(Child.class).findAll(); List<Child> lyjPersons=db.selector(Child.class).where("name","==","小白").findAll(); System.out.println("总共找到:"+lyjPersons.size()); for (int i=0;i<lyjPersons.size();i++){ System.out.println("Child:"+i+" .name="+lyjPersons.get(i).getName()); lyjPersons.get(i).setName("小白猪"); db.update(lyjPersons.get(i)); // db.delete(lyjPersons.get(i)); } } catch (DbException e) { e.printStackTrace(); } } }
package com.snow.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import org.xutils.DbManager;
import org.xutils.ex.DbException;
import org.xutils.x;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private AppApplication appApplication;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
appApplication=new AppApplication();
//添加数据
DbManager db = x.getDb(appApplication.getDaoConfig());
Child child=new Child();
child.setName("小黑");
child.setEmail("gmaillove@163.com");
try {
db.save(child);
} catch (DbException e) {
e.printStackTrace();
}
//查找数据
DbManager db = x.getDb(appApplication.getDaoConfig());
Child child=new Child();
child.setName("小黑");
child.setEmail("gmaillove@163.com");
try {
List<Child> lyjPersons=db.selector(Child.class).findAll();
for (int i=0;i<lyjPersons.size();i++){
System.out.println("Child:"+i+" .name="+lyjPersons.get(i).getName());
}
} catch (DbException e) {
e.printStackTrace();
}
//查找字段
DbManager db = x.getDb(appApplication.getDaoConfig());
Child child=new Child();
child.setName("小黑");
child.setEmail("gmaillove@163.com")
try {
List<Child> lyjPersons=db.selector(Child.class).where("name","==","小黑").findAll();
System.out.println("总共找到:"+lyjPersons.size());
for (int i=0;i<lyjPersons.size();i++){
System.out.println("Child:"+i+" .name="+lyjPersons.get(i).getName());
}
} catch (DbException e) {
e.printStackTrace();
}
//更新字段
DbManager db = x.getDb(appApplication.getDaoConfig());
Child child=new Child();
child.setName("小黑");
child.setEmail("gmaillove@163.com")
try {
List<Child> lyjPersons=db.selector(Child.class).where("name","==","小黑").findAll();
System.out.println("总共找到:"+lyjPersons.size());
for (int i=0;i<lyjPersons.size();i++){
System.out.println("Child:"+i+" .name="+lyjPersons.get(i).getName());
lyjPersons.get(i).setName("小白猪");
db.update(lyjPersons.get(i));
}
} catch (DbException e) {
e.printStackTrace();
}
//删除字段
DbManager db = x.getDb(appApplication.getDaoConfig());
Child child=new Child();
child.setName("小黑");
child.setEmail("gmaillove@163.com")
try {
List<Child> lyjPersons=db.selector(Child.class).where("name","==","小黑").findAll();
System.out.println("总共找到:"+lyjPersons.size());
for (int i=0;i<lyjPersons.size();i++){
System.out.println("Child:"+i+" .name="+lyjPersons.get(i).getName());
db.delete(lyjPersons.get(i));
}
} catch (DbException e) {
e.printStackTrace();
}
}
}