XUtils===XUtils3框架的基本使用方法(二)

本文详细介绍了 XUtils3 的数据库模块,包括数据库和表的创建、表列的增加及对表进行增删查改等操作的具体实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  分类:
 

目录(?)[+]

转载自:http://blog.youkuaiyun.com/a1002450926/article/details/50364196


上一篇文章,主要介绍了XUtil3的注解模块,网络模块,图片加载模块,今天给大家带来数据库模块的讲解,现在主流的ORM框架很多,比如OrmLite,GreenDao,Active Android,Realm等等,这些框架每个都有自己的优点和缺点,大家完全可以根据自己项目的实际需求进行选择,下面开始进入今天的数据库模块的介绍。

今天主要给大家带来以下几个模块: 
如何创建删除一张表 
如何对表进行增删查改操作 
如何创建数据库和删除数据库 
如何建立一表对一表,多表对一表,多表对多表的外键操作。 
相信对ORM框架有过了解的人,大概都知道只要创建一个JavaBean对象,在类的上面和属性的上面添加注释标签,这样就能生成一个表。下面带大家看一下XUtils3的实体bean的写法:  

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. @Table(name="person")  
  2. public class PersonTable {  
  3.     @Column(name="id",isId=true,autoGen=true)  
  4.     private int id;  
  5.     //姓名  
  6.     @Column(name="name")  
  7.     private String name;  
  8.   
  9.     //年龄  
  10.     @Column(name="age")  
  11.     private int age;  
  12.   
  13.     //性别  
  14.     @Column(name="sex")  
  15.     private String sex;  
  16.   
  17.     //工资  
  18.     @Column(name="salary")  
  19.     private String salary;  
  20.   
  21.     public int getId() {  
  22.         return id;  
  23.     }  
  24.   
  25.     public void setId(int id) {  
  26.         this.id = id;  
  27.     }  
  28.   
  29.     public String getName() {  
  30.         return name;  
  31.     }  
  32.   
  33.     public void setName(String name) {  
  34.         this.name = name;  
  35.     }  
  36.   
  37.   
  38.     public String getSex() {  
  39.         return sex;  
  40.     }  
  41.   
  42.     public void setSex(String sex) {  
  43.         this.sex = sex;  
  44.     }  
  45.   
  46.     public int getAge() {  
  47.         return age;  
  48.     }  
  49.   
  50.     public void setAge(int age) {  
  51.         this.age = age;  
  52.     }  
  53.   
  54.   
  55.     public String getSalary() {  
  56.         return salary;  
  57.     }  
  58.   
  59.     public void setSalary(String salary) {  
  60.         this.salary = salary;  
  61.     }  
  62.   
  63.     @Override  
  64.     public String toString() {  
  65.         return "PersonTable [id=" + id + "name=" + name + "age=" + age  
  66.                 + ", sex=" + sex + "salary=" + salary + "]";  
  67.     }  
  68. }  


通过上方的实体bean,我们需要知道一个表对应的实体bean需要注意以下几点: 
1.在类名上面加入@Table标签,标签里面的属性name的值就是以后生成的数据库的表的名字 
2.实体bean里面的属性需要加上@Column标签,这样这个标签的name属性的值会对应数据库里面的表的字段。 
3.实体bean里面的普通属性,如果没有加上@Column标签就不会在生成表的时候在表里面加入字段。 
4.实体bean中必须有一个主键,如果没有主键,表以后不会创建成功,@Column(name=”id”,isId=true,autoGen=true)这个属性name的值代表的是表的主键的标识,isId这个属性代表的是该属性是不是表的主键,autoGen代表的是主键是否是自增长,如果不写autoGen这个属性,默认是自增长的属性。

既然知道怎么写实体bean了,下面看看如何在程序中创建一个数据库和如何生成表的吧。

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public class XUtil {  
  2.     static DbManager.DaoConfig daoConfig;  
  3.     public static DaoConfig getDaoConfig(){  
  4.         File file=new File(Environment.getExternalStorageDirectory().getPath());  
  5.         if(daoConfig==null){  
  6.             daoConfig=new DbManager.DaoConfig()  
  7.             .setDbName("shiyan.db")  
  8.             .setDbDir(file)  
  9.             .setDbVersion(1)  
  10.             .setAllowTransaction(true)  
  11.             .setDbUpgradeListener(new DbUpgradeListener() {  
  12.                 @Override  
  13.                 public void onUpgrade(DbManager db, int oldVersion, int newVersion) {  
  14.   
  15.                 }  
  16.             });  
  17.         }  
  18.         return daoConfig;  
  19.     }  
  20. }  

通过XUti.getDaoConfig()方法,我们能够获取到一个DaoConfig对象。通过getDaoConfig()方法,我们可以知道这个方法主要可以做以下事情:
1.setDbName 设置数据库的名称 
2.setDbDir 设置数据库存放的路径 
3.setDbVersion 设置数据库的版本 
4.setAllowTransaction(true) 设置允许开启事务 
5.setDbUpgradeListener 设置一个版本升级的监听方法 
那么具体我们什么时候创建的表呢?如果我们单纯的调用XUti.getDaoConfig()方法是不能够创建PersonTable这个实体对应的person这张表的,那么如何创建表呢?
只需要一下几步: 
1.DaoConfig daoConfig=XUtil.getDaoConfig(); 
2.DbManager db = x.getDb(daoConfig); 
这里我要告诉大家的是,数据库里面表的创建的时间,只有在你对数据库里面的操作涉及到这张表的操作时,会先判断当前的表是否存在,如果不存在,才会创建一张表,如果存在,才会进行相应的CRUD操作,但是只要我们想进行一张表的CRUD操作,我们必须先执行上面的2步,通俗点说就是必须拿到一个Dbmanger这个对象,我为什么这么说呢?那么咱们就先看一下DbManger的庐山真面目吧。
DbManager部分源码如下:

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public interface DbManager extends Closeable {  
  2.   
  3.     DaoConfig getDaoConfig();  
  4.   
  5.     SQLiteDatabase getDatabase();  
  6.   
  7.     /** 
  8.      * 保存实体类或实体类的List到数据库, 
  9.      * 如果该类型的id是自动生成的, 则保存完后会给id赋值. 
  10.      * 
  11.      * @param entity 
  12.      * @return 
  13.      * @throws DbException 
  14.      */  
  15.     boolean saveBindingId(Object entity) throws DbException;  
  16.   
  17.     /** 
  18.      * 保存或更新实体类或实体类的List到数据库, 根据id对应的数据是否存在. 
  19.      * 
  20.      * @param entity 
  21.      * @throws DbException 
  22.      */  
  23.     void saveOrUpdate(Object entity) throws DbException;  
  24.   
  25.     /** 
  26.      * 保存实体类或实体类的List到数据库 
  27.      * 
  28.      * @param entity 
  29.      * @throws DbException 
  30.      */  
  31.     void save(Object entity) throws DbException;  
  32.   
  33.     /** 
  34.      * 保存或更新实体类或实体类的List到数据库, 根据id和其他唯一索引判断数据是否存在. 
  35.      * 
  36.      * @param entity 
  37.      * @throws DbException 
  38.      */  
  39.     void replace(Object entity) throws DbException;  
  40.   
  41.     ///////////// delete  
  42.     void deleteById(Class<?> entityType, Object idValue) throws DbException;  
  43.   
  44.     void delete(Object entity) throws DbException;  
  45.   
  46.     void delete(Class<?> entityType) throws DbException;  
  47.   
  48.     void delete(Class<?> entityType, WhereBuilder whereBuilder) throws DbException;  
  49.   
  50.     ///////////// update  
  51.     void update(Object entity, String... updateColumnNames) throws DbException;  
  52.   
  53.     void update(Object entity, WhereBuilder whereBuilder, String... updateColumnNames) throws DbException;  
  54.   
  55.     ///////////// find  
  56.     <T> T findById(Class<T> entityType, Object idValue) throws DbException;  
  57.   
  58.     <T> T findFirst(Class<T> entityType) throws DbException;  
  59.   
  60.     <T> List<T> findAll(Class<T> entityType) throws DbException;  
  61.   
  62.     <T> Selector<T> selector(Class<T> entityType) throws DbException;  
  63.   
  64.     DbModel findDbModelFirst(SqlInfo sqlInfo) throws DbException;  
  65.   
  66.     List<DbModel> findDbModelAll(SqlInfo sqlInfo) throws DbException;  
  67.   
  68.     ///////////// table  
  69.   
  70.     /** 
  71.      * 删除表 
  72.      * 
  73.      * @param entityType 
  74.      * @throws DbException 
  75.      */  
  76.     void dropTable(Class<?> entityType) throws DbException;  
  77.   
  78.     /** 
  79.      * 添加一列, 
  80.      * 新的entityType中必须定义了这个列的属性. 
  81.      * 
  82.      * @param entityType 
  83.      * @param column 
  84.      * @throws DbException 
  85.      */  
  86.     void addColumn(Class<?> entityType, String column) throws DbException;  
  87.   
  88.     ///////////// db  
  89.   
  90.     /** 
  91.      * 删除库 
  92.      * 
  93.      * @throws DbException 
  94.      */  
  95.     void dropDb() throws DbException;  
  96.   
  97.     /** 
  98.      * 关闭数据库, 
  99.      * xUtils对同一个库的链接是单实例的, 一般不需要关闭它. 
  100.      * 
  101.      * @throws IOException 
  102.      */  
  103.     void close() throws IOException;  
  104.   
  105.     ///////////// custom  
  106.     void execNonQuery(SqlInfo sqlInfo) throws DbException;  
  107.   
  108.     void execNonQuery(String sql) throws DbException;  
  109.   
  110.     Cursor execQuery(SqlInfo sqlInfo) throws DbException;  
  111.   
  112.     Cursor execQuery(String sql) throws DbException;  
  113. }  

通过DbManager这个类我们知道主要它做了以下几件事情: 
1.getDaoConfig 获取数据库的配置信息 
2.getDatabase 获取数据库实例 
3.saveBindingId saveOrUpdate save 插入数据的3个方法(保存数据) 
4.replace 只有存在唯一索引时才有用 慎重 
5.delete操作的4种方法(删除数据) 
6.update操作的2种方法(修改数据) 
7.find操作6种方法(查询数据) 
8.dropTable 删除表 
9.addColumn 添加一列 
10.dropDb 删除数据库

插入操作

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-size:18px;">private void insert() {  
  2.         try {  
  3.             PersonTable person=new PersonTable();  
  4.             person.setName("小丽");  
  5.             person.setAge(19);  
  6.             person.setSex("woman");  
  7.             person.setSalary(4000);  
  8.             db.save(person);  
  9.           //db.saveOrUpdate(person);  
  10.           //db.saveBindingId(person);  
  11.         } catch (DbException e) {  
  12.             e.printStackTrace();  
  13.         }  
  14.     }</span>  
结果如下: 
 
3种插入操作所需要的参数都是一个实体bean。save和saveOrUpdate的区别就是当一个实体里面的主键一样时如果使用saveOrUpdate会将当前主键对应的这条数据进行替换,而如果你使用了save就会报错。
saveBindingId主要是存进去的数据如果当前表有主键回合主键进行绑定关联。 
当你执行完这个方法后,你会看到数据库里面person表里面多了一条数据.


查询操作

当前数据库中的表的效果如下: 
 
1.findById的使用 
该方法主要是通过主键的值来进行查找表里面的数据 
需求:查找上方person表里面id为3的数据

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void query(){  
  2.         try {  
  3.             PersonTable person = db.findById(PersonTable.class"2");  
  4.             Log.e("person",person.toString());  
  5.         } catch (DbException e) {  
  6.             e.printStackTrace();  
  7.         }  
  8.     }  
结果如下: 
 
2.findFirst的使用 
该方法主要是返回当前表里面的第一条数据 
需求:查找上方person表里面的第一条数据
[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void query() {  
  2.         try {  
  3.             PersonTable person = db.findFirst(PersonTable.class);  
  4.             Log.e("person", person.toString());  
  5.         } catch (DbException e) {  
  6.             e.printStackTrace();  
  7.         }  
  8.     }  
 
3.findAll的使用 
该方法主要是返回当前表里面的所有数据 
需求:查找person表里面的所有数据

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void query() {  
  2.         try {  
  3.             List<PersonTable> persons = db.findAll(PersonTable.class);  
  4.             Log.e("persons", persons.toString());  
  5.         } catch (DbException e) {  
  6.             e.printStackTrace();  
  7.         }  
  8.     }  


4.selector的使用 
该方法主要是用来进行一些特定条件的查找 
需求:查找person表里面age大于30并且性别为man的数据

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void query() {  
  2.         try {  
  3.             List<PersonTable> persons = db.selector(PersonTable.class).where("age"">"30).and("sex""=""man").findAll();  
  4.             for(PersonTable person:persons){  
  5.                 Log.e("person",person.toString());  
  6.             }  
  7.         } catch (DbException e) {  
  8.             e.printStackTrace();  
  9.         }  
  10.     }  


5.findDbModelFirst的使用 
说起这个方法,该方法返回一个DbModel对象,那么该对象是什么呢? 
DbModel源码如下:

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public final class DbModel {  
  2.   
  3.     /** 
  4.      * key: columnName 
  5.      * value: valueStr 
  6.      */  
  7.     private HashMap<String, String> dataMap = new HashMap<String, String>();  
  8.   
  9.     public String getString(String columnName) {  
  10.         return dataMap.get(columnName);  
  11.     }  
  12.   
  13.     public int getInt(String columnName) {  
  14.         return Integer.valueOf(dataMap.get(columnName));  
  15.     }  
  16.   
  17.     public boolean getBoolean(String columnName) {  
  18.         String value = dataMap.get(columnName);  
  19.         if (value != null) {  
  20.             return value.length() == 1 ? "1".equals(value) : Boolean.valueOf(value);  
  21.         }  
  22.         return false;  
  23.     }  
  24.   
  25.     public double getDouble(String columnName) {  
  26.         return Double.valueOf(dataMap.get(columnName));  
  27.     }  
  28.   
  29.     public float getFloat(String columnName) {  
  30.         return Float.valueOf(dataMap.get(columnName));  
  31.     }  
  32.   
  33.     public long getLong(String columnName) {  
  34.         return Long.valueOf(dataMap.get(columnName));  
  35.     }  
  36.   
  37.     public Date getDate(String columnName) {  
  38.         long date = Long.valueOf(dataMap.get(columnName));  
  39.         return new Date(date);  
  40.     }  
  41.   
  42.     public java.sql.Date getSqlDate(String columnName) {  
  43.         long date = Long.valueOf(dataMap.get(columnName));  
  44.         return new java.sql.Date(date);  
  45.     }  
  46.   
  47.     public void add(String columnName, String valueStr) {  
  48.         dataMap.put(columnName, valueStr);  
  49.     }  
  50.   
  51.     /** 
  52.      * @return key: columnName 
  53.      */  
  54.     public HashMap<String, String> getDataMap() {  
  55.         return dataMap;  
  56.     }  
  57.   
  58.     /** 
  59.      * @param columnName 
  60.      * @return 
  61.      */  
  62.     public boolean isEmpty(String columnName) {  
  63.         return TextUtils.isEmpty(dataMap.get(columnName));  
  64.     }  
  65. }  


通过源码,我们分析发现DbModel本质就是一个key为当前表的字段,value为当前某条记录的值的一个HashMap. 
需求:查找person表中第一条数据的那个人的年龄age是多少。

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void query() {  
  2.         try {  
  3.             DbModel model = db.findDbModelFirst(new SqlInfo("select * from person"));  
  4.             Log.e("age", model.getString("age"));  
  5.         } catch (DbException e) {  
  6.             e.printStackTrace();   
  7.         }  
  8.     }  

注意上面的sqlInfo对象的创建的构造参数只需要传入一个sql语句即可。 


6.findDbModelAll的用法 
该方法的用途就是返回满足sqlInfo信息的所有数据的字段的一个集合。 
需求:查找person表中年龄age大于25里面的所有人的姓名

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void query() {  
  2.         try {  
  3.             List<DbModel> persons = db.findDbModelAll(new SqlInfo("select * from person where age > 25"));  
  4.             for(DbModel person:persons){  
  5.                 Log.e("name", person.getString("name"));  
  6.             }  
  7.         } catch (DbException e) {  
  8.             e.printStackTrace();  
  9.         }  
  10.     }  


基本把查询的6种方式都说了一遍,当然上面的6种需求不一定完全用上面的查询方法可以查出结果,我这么查询的目的主要是带领大家熟悉一下XUtils3的6种查询方法是如何使用的,会了上面的6种方法,我相信你的查询不会有太大问题,至于复杂的查询无非就是sql语句的基本功力了,大家赶紧动手操练一下吧。


修改操作

当前数据库中的表的效果如下: 
 
修改一共有2种方法: 
第一种: 
需求:我们把上面的id为1的这条记录的age修改为25岁

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void update() {  
  2.         try{  
  3.             PersonTable person = db.findById(PersonTable.class1);  
  4.             person.setAge(25);  
  5.             db.update(person, "age");  
  6.         }catch(Exception e){  
  7.             e.printStackTrace();  
  8.         }  
  9.     }  


通过方法,我们知道首先要通过DBManager通过查找的方法先找到id为1的这个实体bean,如果你对里面的哪个字段需要修改,只需要重新set这个属性的值,然后调用DBManager.update方法,第一个参数是需要修改的实体,第二个参数是对应的属性。
 
第二种: 
需求:将person表中性别为man的工资salary都变成6000。

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void update() {  
  2.         try {  
  3.             List<PersonTable> persons = db.findAll(PersonTable.class);  
  4.             for(PersonTable person:persons){  
  5.                 person.setSalary(6000);  
  6.                 db.update(person, WhereBuilder.b("sex""=""man"), "salary");  
  7.             }  
  8.         } catch (Exception e) {  
  9.             e.printStackTrace();  
  10.         }  
  11.     }  

修改数据一共就2种方法,基本都是需要一个实体bean对象去进行操作的,上面的第二种方法无非就是在修改数据时,多了一个限制条件,这样修改数据显得灵活一些。 
上面第二种update的方法的参数简单介绍一下: 
第一个参数:实体bean对象 
第二个参数:一个WhereBuilder对象,主要是通过静态b方法去构造一个where条件语句 
第三个参数:需要修改的字段名,如果你的需求是修改了2个或者更多个字段,只需要在后面加上相应的参数即可,例如第二种方法我不止修改salary还需要修改age统一为40岁,参考如下;

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void update() {  
  2.         try {  
  3.             List<PersonTable> persons = db.findAll(PersonTable.class);  
  4.             for(PersonTable person:persons){  
  5.                 person.setSalary(6000);  
  6.                 person.setAge(40);  
  7.                 db.update(person, WhereBuilder.b("sex""=""man"), "salary","age");  
  8.             }  
  9.         } catch (Exception e) {  
  10.             e.printStackTrace();  
  11.         }  
  12.     }  


删除操作

当前数据库中的person表的效果如下: 
 
1.deleteById的用法 
该方法主要是根据表的主键进行单条记录的删除 
需求:删除上方person表中id为5的记录

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void delete() {  
  2.         try {  
  3.             db.deleteById(PersonTable.class5);  
  4.         } catch (DbException e) {  
  5.             e.printStackTrace();  
  6.         }  
  7.     }  

结果如下: 
 
2.delete(Object entity)的用法 
该方法主要是根据实体bean进行对表里面的一条或多条数据进行删除 
需求:删除name为骆驼这条信息的记录

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void delete() {  
  2.         try {  
  3.             PersonTable person = db.selector(PersonTable.class).where("name""=""骆驼").findFirst();  
  4.             db.delete(person);  
  5.         } catch (DbException e) {  
  6.             e.printStackTrace();   
  7.         }  
  8.     }  


3.delete(Class<?> entityType) 
该方法主要是用来删除表格里面的所有数据,但是注意:表还会存在,只是表里面数据没有了

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void delete() {  
  2.         try {  
  3.             db.delete(PersonTable.class);  
  4.         } catch (DbException e) {  
  5.             e.printStackTrace();   
  6.         }  
  7.     }  

4. delete(Class<?> entityType, WhereBuilder whereBuilder) 
该方法主要是根据where语句的条件进行删除操作 
需求:将person表总sex为woman并且salary为5000的信息删除

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void delete() {  
  2.         try {  
  3.             db.delete(PersonTable.class, WhereBuilder.b("sex", "=", "woman").and("salary", "=", "5000"));  
  4.         } catch (DbException e) {  
  5.             e.printStackTrace();  
  6.         }  
  7.     }  

5.dropTable(Class<?> entityType)

该方法是用来删除表

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void delete() {  
  2.         try {  
  3.             db.dropTable(PersonTable.class);  
  4.         } catch (DbException e) {  
  5.             e.printStackTrace();  
  6.         }  
  7.     }  

6. dropDb() 
该方法是用来删除数据库

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. db.dropDb();  

其他方法

1.addColumn(Class<> entityType, String column) 
需求:在上方表中加入一个country字段 
PersonTable的实体代码如下:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. @Table(name="person")  
  2. public class PersonTable {  
  3.     @Column(name="id",isId=true,autoGen=true)  
  4.     private int id;  
  5.     //姓名  
  6.     @Column(name="name")  
  7.     private String name;  
  8.   
  9.     //年龄  
  10.     @Column(name="age")  
  11.     private int age;  
  12.   
  13.     //性别  
  14.     @Column(name="sex")  
  15.     private String sex;  
  16.   
  17.     //工资  
  18.     @Column(name="salary")  
  19.     private int salary;  
  20.   
  21.     //国家  
  22.     @Column(name="country",property="中国")  
  23.     private String country;  
  24.   
  25.     public int getId() {  
  26.         return id;  
  27.     }  
  28.   
  29.     public void setId(int id) {  
  30.         this.id = id;  
  31.     }  
  32.   
  33.     public String getName() {  
  34.         return name;  
  35.     }  
  36.   
  37.     public void setName(String name) {  
  38.         this.name = name;  
  39.     }  
  40.   
  41.   
  42.     public String getSex() {  
  43.         return sex;  
  44.     }  
  45.   
  46.     public void setSex(String sex) {  
  47.         this.sex = sex;  
  48.     }  
  49.   
  50.     public int getAge() {  
  51.         return age;  
  52.     }  
  53.   
  54.     public void setAge(int age) {  
  55.         this.age = age;  
  56.     }  
  57.   
  58.   
  59.     public int getSalary() {  
  60.         return salary;  
  61.     }  
  62.   
  63.     public void setSalary(int salary) {  
  64.         this.salary = salary;  
  65.     }  
  66.   
  67.     public String getCountry() {  
  68.         return country;  
  69.     }  
  70.   
  71.     public void setCountry(String country) {  
  72.         this.country = country;  
  73.     }  
  74.   
  75.     @Override  
  76.     public String toString() {  
  77.         return "PersonTable [id=" + id + "name=" + name + "age=" + age  
  78.                 + ", sex=" + sex + "salary=" + salary + "country="  
  79.                 + country + "]";  
  80.     }  
  81. }  


[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private void addColumn() {  
  2.         try {  
  3.             db.addColumn(PersonTable.class, "country");  
  4.         } catch (DbException e) {  
  5.             e.printStackTrace();  
  6.         }  
  7.     }  

执行完addColumn方法,我们看到person表里面多了一个country字段. 
结果如下: 

总结

上面主要介绍了XUtils3的数据库模块,包括如何创建数据库,如何创建表,如何给表进行添加一列,如何对表进行增删查改的操作。说了这么多,相信大家肯定对XUtils3的数据库模块有了一个基本的理解,至于一表对一表,多表对一表,多表对多表等等这类需求,无非就是在某个表里面加入一个字段,或者创建一个第三方表用来维护表与表之间的关系,这种类型的例子我就不举例说明了,原因是那些需求都离不开上面的增删查改的方法,我相信你只要把上面的方法完全会用,你的XUtils3的数据库模块的基本使用就不会有问题了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值