1,什么叫事务? 把N多次操作作为一个整体,从第一个执行到最后一个不可以中断,多个事务之间相互独立互不干扰,事务中始终保持数据的一致性。 2,Xutils3之数据库中: ~1,在开启数据库时添加一个监听,在监听中添加:db.getDatabase().enableWriteAheadLogging(); //开启数据库支持多线程操作 ~2,利用xutils3建立表的步骤: !1,类上边添加 : @Table(name = "",onCreated="sql") !2,属性上边添加:@Column(name = "id",isId = true,autoGen = true,property == "NOT NULL" ) 3,什么叫ORM? ~1,全称:Object Relation Mapping 对象关系映射。 ~2,意义:面向对象编程语言中的一种编程技术,用于实现不同类型系统的数据之间的转换。 4,出现"error running app instant run requires"异常时,解决方法: Tools -> Adnroid -> enable ADB integration 5,Xutils3 存储数据时,不但可以存储单个数据(db.save(d))还可以存储一个集合(db.save(ArrayList al))。 6,查看数据库文件默认路径:/data/data/sc.emperor.ps.databasedemo/databases 7,Xutils3 增删改查步骤; ~1,集成Xutils3: !1,添加Intent、Write权限 !2,在Gradle Scripts中添加依赖 compile 'org.xutils:xutils:3.3.38' !3,新建App继承Application添加 x.Ext.init(this); ~2,相关类代码:
package sc.emperor.ps.databasedemo; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import org.xutils.DbManager; import org.xutils.db.sqlite.SqlInfo; import org.xutils.db.sqlite.WhereBuilder; import org.xutils.db.table.DbModel; import org.xutils.ex.DbException; import org.xutils.view.annotation.ContentView; import org.xutils.view.annotation.Event; import org.xutils.x; import java.util.ArrayList; import java.util.List; @ContentView(R.layout.activity_main) public class MainActivity extends AppCompatActivity { private DbManager.DaoConfig dd = new DbManager.DaoConfig().setDbName("ps.db").setDbOpenListener(new DbManager.DbOpenListener() { @Override public void onDbOpened(DbManager db) { db.getDatabase().enableWriteAheadLogging(); } }); private DbManager db = x.getDb(dd); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); x.view().inject(this); } /** * 创建库、创建表、添加数据 * * @param v */ @Event(R.id.bt_Create) private void onCreate(View v) throws DbException { ArrayList<Employee> list = new ArrayList<>(); list.add(new Employee("L1", "man", 21)); list.add(new Employee("L2", "woman", 31)); list.add(new Employee("L3", "man", 41)); list.add(new Employee("L4", "woman", 51)); list.add(new Employee("L5", "man", 61)); list.add(new Employee("L6", "woman", 71)); list.add(new Employee("L7", "man", 81)); db.save(list); } /** * 删除数据库内容 * * @param v * @throws DbException */ @Event(R.id.bt_delDb) private void onDelDb(View v) throws DbException { db.dropDb(); } /** * 删除数据库中的表 * * @param v * @throws DbException */ @Event(R.id.bt_delSheet) private void onDelSheet(View v) throws DbException { db.dropTable(Employee.class); } /** * 删除数据库中名字为L3的那条数据 * * @param v * @throws DbException */ @Event(R.id.bt_delData) private void onDelData(View v) throws DbException { WhereBuilder b = WhereBuilder.b(); b.and("name", "=", "L3"); db.delete(Employee.class, b); } /** * 修改所有年龄大于40所有女性名字叫“哈哈” * * @param v */ @Event(R.id.bt_update) private void onUpdate(View v) throws DbException { String sql = "select id,name,age,sex from Employee_info where age > 40 and sex = 'woman' "; List<DbModel> ls = db.findDbModelAll(new SqlInfo(sql)); for (DbModel d : ls ) { int id = d.getInt("id"); Employee e = db.findById(Employee.class, id); e.setName("哈"); db.saveOrUpdate(e); } } }
******************相关辅助类代码:
package sc.emperor.ps.databasedemo; import org.xutils.db.annotation.Column; import org.xutils.db.annotation.Table; /** * Created by purplesea on 2016/11/29 0029. */ @Table(name = "Employee_info") public class Employee { @Column(name = "id", isId = true) private int id; @Column(name = "name") private String name; @Column(name = "sex") private String sex; @Column(name = "age") private int age; public Employee() { } public Employee(String name, String sex, int age) { this.name = name; this.sex = sex; this.age = age; } @Override public String toString() { return "Employee{" + "id=" + id + ", name='" + name + '\'' + ", sex='" + sex + '\'' + ", age=" + age + '}'; } 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 getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
本文介绍了Xutils3在数据库操作中的使用,包括事务的概念、如何开启多线程操作、ORM对象关系映射的含义,以及Xutils3的增删改查步骤。此外,还提到了异常处理和查看数据库文件的默认路径。
791

被折叠的 条评论
为什么被折叠?



