xUtils数据库---增删改查(表与表之间)

来源:互联网 发布:java破解单机游戏大全 编辑:程序博客网 时间:2024/06/05 21:14

xUtils数据库是xUtils框架里包含的一部分。xUtils是一款快速开发android移动应用的框架,其包含了很多实用的android工具. 目前xUtils主要有四大模块:DbUtils模块、ViewUtils模块、HttpUtils模、BitmapUtils模块。
详细介绍请见:
kevin-gox的Utils3中对Sqlite数据库的操作 - CSDN博客 http://blog.csdn.net/tybaoerge/article/details/50414471
此处我只介绍此数据库的使用方法。

1.引入xUtils框架:

  compile 'org.xutils:xutils:3.3.26'

添加权限:

 <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><application        android:name=".BaseApplication"        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:roundIcon="@mipmap/ic_launcher_round"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".activity.HomeActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>

2.新建BaseApplication,建立数据库

注释很详细,就不多做介绍了:

import android.app.Application;import org.xutils.DbManager;import org.xutils.db.table.TableEntity;import org.xutils.ex.DbException;import org.xutils.x;/** * daoCinfig对象主要用于对于数据库的一些初始化设置 * 1.setDbName 设置数据库的名称 * 2.setDbDir 设置数据库存放的路径 * 3.setDbVersion 设置数据库的版本 * 4.setAllowTransaction(true) 设置允许开启事务 * 5.setDbUpgradeListener 设置一个版本升级的监听方法 * * 注意: * 数据库里面表的创建的时间, * 只有在你对数据库里面的操作涉及到这张表的操作时,会先判断当前的表是否存在, * 如果不存在,才会创建一张表,如果存在,才会进行相应的CRUD操作 */public class BaseApplication extends Application{    public static DbManager.DaoConfig daoConfig;    @Override    public void onCreate() {        super.onCreate();        //框架初始化        x.Ext.init(this);        //初始化数据库        initDb();    }    public static DbManager.DaoConfig getDaoConfig() {        return daoConfig;    }    /**     * 初始化数据库、建表     */    protected void initDb() {        //本地数据的初始化        daoConfig = new DbManager.DaoConfig()                .setDbName("xutils_db") //设置数据库名                .setDbVersion(1) //设置数据库版本,每次启动应用时将会检查该版本号,                //发现数据库版本低于这里设置的值将进行数据库升级并触发DbUpgradeListener                .setAllowTransaction(true)//设置是否开启事务,默认为false关闭事务                .setTableCreateListener(new DbManager.TableCreateListener() {                    @Override                    public void onTableCreated(DbManager db, TableEntity<?> entity) {                    }                })//设置数据库创建时的Listener                .setDbUpgradeListener(new DbManager.DbUpgradeListener() {                    @Override                    public void onUpgrade(DbManager db, int oldVersion, int newVersion) {                        if( oldVersion < newVersion ){                            db.getDatabase().setVersion( newVersion);                        }                    }                });//设置数据库升级时的Listener,这里可以执行相关数据库表的相关修改,比如alter语句增加字段等        //.setDbDir(null);//设置数据库.db文件存放的目录,默认为包名下databases目录下    }}

3.建立User和Order类(其实就是表table):

一个User对应多个Order

User

/** * 如果需要添加联合唯一索引则可以在@Table注解加上 * onCreated = “CREATE UNIQUE INDEX unique_name ON table_name(column1, column2)”) * 为表创建column1,column2联合唯一索引 *///为表创建NAME,EMAIL联合唯一索引@Table(name = "user",        onCreated = "CREATE UNIQUE INDEX realative_unique ON user(NAME, EMAIL)")public class User implements Serializable{    @Column(            name = "ID",            isId = true,            autoGen = true    )    private int id;    @Column(name = "NAME",property = "NOT NULL")//NAME字段非空    private String name;    @Column(name = "EMAIL",property = "NOT NULL")    private String email;    @Column(name = "MOBILE")    private String mobile;    @Column(name = "REGTIME")    private Date regTime;    @Column(name = "ORDER")    private List<Order> orderlist;    //国家    @Column(name = "country",property = "China")    private String country = "";    public User(){    }    public User(String name, String email, String mobile){        this.name = name;        this.email = email;        this.mobile = mobile;    }    public String getCountry() {        return country;    }    public void setCountry(String country) {        this.country = country;    }    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 getMobile() {        return mobile;    }    public void setMobile(String mobile) {        this.mobile = mobile;    }    public Date getRegTime() {        return regTime;    }    public void setRegTime(Date regTime) {        this.regTime = regTime;    }    public List<Order> getOrders(DbManager db) throws DbException {        return db.selector(Order.class).where("USERID", "=", this.id).findAll();    }    public void setOrderlist(List<Order> orderlist) {        this.orderlist = orderlist;    }    public String toString(){        return "{id=" + id + ",  name=" + name + ",  email=" + email + ",  mobile="                + mobile + ",country = " + country + "}\n";    }}

order:

@Table(name = "order")public class Order implements Serializable{    @Column(name = "ID", isId = true, autoGen = true)    private int id;    @Column(name = "NUMBER")    private String number;    @Column(name = "SUBJECT")    private String subject;    @Column(name = "USERID")    private int userId;    public User getUser(DbManager db) throws DbException {        return db.findById(User.class, userId);    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getNumber() {        return number;    }    public void setNumber(String number) {        this.number = number;    }    public String getSubject() {        return subject;    }    public void setSubject(String subject) {        this.subject = subject;    }    public int getUserId() {        return userId;    }    public void setUserId(int userId) {        this.userId = userId;    }    @Override    public String toString() {        return this.getClass().getName()                + "{id=" + id + ",  number=" + number + ",  subject=" + subject + ",  userId=" + userId + "}\n";    }}

4.对数据库进行数据操作的所有函数:

方便学习,所以把函数统一写在了一起,每个方法都尝试了很多种写法:

增:

 /**     * 给user表添加country字段     */    public boolean dbAddUserColumn(){        try {            int version = dbManager.getDatabase().getVersion();            dbManager.addColumn(User.class, "country");            BaseApplication.getDaoConfig().getDbUpgradeListener().onUpgrade( dbManager,version,version + 1);        } catch (DbException e) {            e.printStackTrace();            return false;        }        return true;    }    /**     * 批量增加User但无oderlist     *     * @throws DbException     */    public boolean dbAddUsers(){        //User user = new User("Kevingo","caolbmail@gmail.com","13299999999",new Date());        //db.save(user);//保存成功之后【不会】对user的主键进行赋值绑定        //db.saveOrUpdate(user);//保存成功之后【会】对user的主键进行赋值绑定        //db.saveBindingId(user);//保存成功之后【会】对user的主键进行赋值绑定,并返回保存是否成功        //方法一:        try {            List<User> users = new ArrayList<User>();            for (int i = 0; i < 10; i++) {                //User的@Table注解onCreated属性加了name,email联合唯一索引.                User user = new User(i + "_QiLin", "qqqqqqqqqq@gmail.com", "13299999999");                users.add(user);            }            dbManager.saveBindingId(users);        } catch (DbException e) {            e.printStackTrace();            return false;        }        //方法二:使用sql语句//        try {//            for( int i = 0 ; i < 9; i++){//                String name = i + "_Wilson";//                String sqlString = "INSERT INTO User (name,email, mobile) VALUES ( '" +  name//                        + " ','www555@qq.com' , '99999999999')";//                dbManager.execNonQuery( sqlString );//            }//        } catch (DbException e) {//            e.printStackTrace();//            return false;//        }        return true;    }    /**     * findById获得此user后增加其oderlist     *     * @throws DbException     */    public boolean dbAddUserOfOders( int userId){        try {            User user = dbManager.findById(User.class, userId);            if (user == null) {                user = new User("Kevingo" + System.currentTimeMillis(), "caolbmail@gmail.com", "13299999990");                dbManager.saveBindingId(user);            }            for (int i = 0; i < 5; i++) {                Order order = new Order();                order.setNumber(i + "");                order.setSubject( i + "_Chinese");                order.setUserId(user.getId());                dbManager.save(order);            }        } catch (DbException e) {            e.printStackTrace();            return false;        }        return true;    }    /**     * findById获得此user后增加其country     *     * @throws DbException     */    public boolean dbAddUserCountry(){        try {            List<User> users = dbManager.findAll(User.class);            if (users == null || users.size() == 0) {                return false;            }            for (User user : users) {                user.setCountry("China");                dbManager.saveOrUpdate(user);            }        } catch (DbException e) {            e.printStackTrace();            return false;        }        return true;    }

删:

 /**     * 按条件删除user     * 删除方法:     * 1.删除一个对象或者对象List,     * 通过org.xutils.DbManager#deleteById(Class<T> entityType, Object idValue)来删除某个主键对应的记录。     * 2.org.xutils.DbManager#delete(Object entity)方法删除某个已经存在表中的对象。     * 3.org.xutils.DbManager#delete(Class<T> entityType)则会删除表中所有记录,相当于清空表数据。     * 4.WhereBuilder对象提供了类似Selector对象的and(), or(), expr()等方法来链式操作该对象本身,     * 复写的toString方法可以返回其对应的where条件语句.     *     * @throws DbException     */    public boolean dbDeleteUser( int UserId){//        //方法一:使用whereBuilder//        try {//            List<User> users = dbManager.findAll(User.class);//            if (users == null || users.size() == 0) {//                return false;//            }//            WhereBuilder whereBuilder = WhereBuilder.b();////            whereBuilder.and("id", ">", "5").or("id", "=", "1").expr(" and mobile > '2015-12-29 00:00:01' ");//            whereBuilder.and("id", "=", Integer.toString(UserId));//            dbManager.delete(User.class, whereBuilder);//        } catch (DbException e) {//            e.printStackTrace();//            return false;//        }        //方法二:使用Sql语句        try {            String sqlString = " DELETE FROM user WHERE id = " + Integer.toString(UserId);            dbManager.execNonQuery( sqlString);        } catch (DbException e) {            e.printStackTrace();            return false;        }//        db.delete(User.class);//删除所有数据//        db.delete(Order.class);//删除所有数据        //db.delete(users.get(0)); //删除第一个对象        //db.delete(User.class);//删除表中所有的User对象【慎用】        //db.delete(users); //删除users对象集合        //users =  db.findAll(User.class);        // showDbMessage("【dbDelete#delete】数据库中还有user数目:" + users.size());        return true;    }    /**     * 根据OrderId进行删除     * @param OrderId     * @return     */    public boolean dbDeleteOrder( int OrderId){        try {            WhereBuilder whereBuilder = WhereBuilder.b();            whereBuilder.and("id", "=", Integer.toString(OrderId));            dbManager.delete(Order.class, whereBuilder);        } catch (DbException e) {            e.printStackTrace();            return false;        }        return true;    }

改:

/**     * 按条件筛选出user并更新其email、mobile信息     * 更新方法:     * 1.更新对象除了几个update方法外还可以通过replace方法实现。     * 2.通过update方法传入WhereBuilder对象和org.xutils.common.util.KeyValue对象实现对复合条件的记录更新指定的列和值。     * 3.通过org.xutils.DbManager对象中的一系列exec前缀的方法可以实现sql语句查询。     *     * @throws DbException     */    public boolean dbUpdateUserInfo( int UserId,String mobile){//        List<User> users = db.findAll(User.class);//        if (users == null || users.size() == 0) {//            showDbMessage("无任何用户信息,请先添加用户");//            return;//        }//          //第一种//        User firstUser = db.findFirst(User.class);//修改了第一条数据//        firstUser.setName("老王");//        firstUser.setEmail("0000000000@email.com");//        db.update(firstUser, "name", "email");        //第二种//        //方法一:使用whereBuilder//        try {//            WhereBuilder whereBuilder = WhereBuilder.b();//            whereBuilder.and("id", "=", Integer.toString(UserId));//            dbManager.update(User.class, whereBuilder,//                    new KeyValue("email", "0000000000@email.com")//                    , new KeyValue("mobile", mobile));//对User表中复合whereBuilder所表达的条件的记录更新email和mobile//        } catch (DbException e) {//            e.printStackTrace();//            return false;//        }        //方法二:使用sql语句        try {            String sqlStr = "UPDATE user SET email = 'www000@qq.com', mobile = '"                    + mobile + "'WHERE id = " + Integer.toString(UserId);            dbManager.execNonQuery( sqlStr);        } catch (DbException e) {            e.printStackTrace();            return false;        }        return true;    }    /**     * 根据OrderId更新subject信息     * @param OrderId     * @param subject     * @return     */    public boolean dbUpdateOrderInfo( int OrderId,String subject){        try {            WhereBuilder whereBuilder = WhereBuilder.b();            whereBuilder.and("id", "=", Integer.toString(OrderId));            dbManager.update(Order.class, whereBuilder,                    new KeyValue("subject", subject));        } catch (DbException e) {            e.printStackTrace();            return false;        }        return true;    }

查:

 /**     * 按条件查找user     * 查询方法:     * 1.查询某张表内的所有对象, 可以通过org.xutils.DbManager#findAll(Class<T> class)。     * 2.根据对象的主键id来查找org.xutils.DbManager#findById(Class<T> entityType, Object idValue)。     * 3.查询对象org.xutils.db.Selector.该对象提供了where(), and(), or(),orderBy(), groupBy(), limit(), offset(),     * count()等方法来实现灵活的复杂查询,而且这些方法都返回对象本身,所以可以进行链式操作。     *     * @throws DbException     */    public List<User> dbFindUserByCondition(){        //List<User> users = db.findAll(User.class);        //showDbMessage("【dbFind#findAll】第一个对象:"+users.get(0).toString());        //User user = db.findById(User.class, 1);        //showDbMessage("【dbFind#findById】第一个对象:" + user.toString());        //long count = db.selector(User.class).where("name","like","%kevin%").and("email","=","caolbmail@gmail.com").count();//返回复合条件的记录数        //showDbMessage("【dbFind#selector】符合条件数目:" + count);//        //使用sql语句进行查询//        Cursor cursor = db.execQuery("select * from user where id<=5");//        if( cursor != null && !cursor.isLast() ){//            cursor.moveToNext();//            cursor.getString(cursor.getColumnIndex("NAME"));//            int count = cursor.getColumnCount();//            showDbMessage("【db.execQuery#selector】符合条件数目:" + count);//        }//        if (cursor!=null){//            cursor.close();//        }        //Sql查询语句使用说明:        //以"A"或"L"或"N"开头的人:WHERE name LIKE '[ALN]%'        //不以 "A" 或 "L" 或 "N" 开头的人:WHERE name LIKE '[!ALN]%'        //选取名字的第一个字符之后是"eorge"的人:where name like '_eorge'        //使用selector进行复合查询        List<User> users = null;        try {            users = dbManager.selector(User.class)                    .where("name", "like", "%kevin%")                    .and("email", "=", "caolbmail@gmail.com")                    .orderBy("regTime", true)//true为:降序desc                    .limit(2) //只查询两条记录                    .offset(2) //偏移两个,从第三个记录开始返回,limit配合offset达到sqlite的limit m,n的查询                    .findAll();        } catch (DbException e) {            e.printStackTrace();            return users;        }        return users;    }    /**     * 查找所有user     *     * @throws DbException     */    public List<User> dbFindAllUser(){        List<User> users = null;        try {            users = dbManager.findAll(User.class);        } catch (DbException e) {            e.printStackTrace();            return users;        }        return users;    }    /**     * 查找此user的orders     *     * @throws DbException     */    public List<Order> dbFindAllOrder( User user){        List<Order> orders = null;        try {            if ( user != null ) {                orders = user.getOrders(dbManager);            }        } catch (DbException e) {            e.printStackTrace();            return orders;        }        return orders;    }

整体代码:

/** * db.save(entity);//保存成功之后【不会】对user的主键进行赋值绑定 * db.saveOrUpdate(entity);//如果一个对象主键为null则会新增该对象, * 成功之后【会】对user的主键进行赋值绑定,否则根据主键去查找更新 * db.saveBindingId(entity);//保存成功之后【会】对user的主键进行赋值绑定,并返回保存是否成功 */public class MyDbHelper {    private DbManager dbManager;    public  MyDbHelper (){        this.dbManager = x.getDb(BaseApplication.getDaoConfig());    }    /**     * 给user表添加country字段     */    public boolean dbAddUserColumn(){        try {            int version = dbManager.getDatabase().getVersion();            dbManager.addColumn(User.class, "country");            BaseApplication.getDaoConfig().getDbUpgradeListener().onUpgrade( dbManager,version,version + 1);        } catch (DbException e) {            e.printStackTrace();            return false;        }        return true;    }    /**     * 批量增加User但无oderlist     *     * @throws DbException     */    public boolean dbAddUsers(){        //User user = new User("Kevingo","caolbmail@gmail.com","13299999999",new Date());        //db.save(user);//保存成功之后【不会】对user的主键进行赋值绑定        //db.saveOrUpdate(user);//保存成功之后【会】对user的主键进行赋值绑定        //db.saveBindingId(user);//保存成功之后【会】对user的主键进行赋值绑定,并返回保存是否成功        //方法一:        try {            List<User> users = new ArrayList<User>();            for (int i = 0; i < 10; i++) {                //User的@Table注解onCreated属性加了name,email联合唯一索引.                User user = new User(i + "_QiLin", "qqqqqqqqqq@gmail.com", "13299999999");                users.add(user);            }            dbManager.saveBindingId(users);        } catch (DbException e) {            e.printStackTrace();            return false;        }        //方法二:使用sql语句//        try {//            for( int i = 0 ; i < 9; i++){//                String name = i + "_Wilson";//                String sqlString = "INSERT INTO User (name,email, mobile) VALUES ( '" +  name//                        + " ','www555@qq.com' , '99999999999')";//                dbManager.execNonQuery( sqlString );//            }//        } catch (DbException e) {//            e.printStackTrace();//            return false;//        }        return true;    }    /**     * findById获得此user后增加其oderlist     *     * @throws DbException     */    public boolean dbAddUserOfOders( int userId){        try {            User user = dbManager.findById(User.class, userId);            if (user == null) {                user = new User("Kevingo" + System.currentTimeMillis(), "caolbmail@gmail.com", "13299999990");                dbManager.saveBindingId(user);            }            for (int i = 0; i < 5; i++) {                Order order = new Order();                order.setNumber(i + "");                order.setSubject( i + "_Chinese");                order.setUserId(user.getId());                dbManager.save(order);            }        } catch (DbException e) {            e.printStackTrace();            return false;        }        return true;    }    /**     * findById获得此user后增加其country     *     * @throws DbException     */    public boolean dbAddUserCountry(){        try {            List<User> users = dbManager.findAll(User.class);            if (users == null || users.size() == 0) {                return false;            }            for (User user : users) {                user.setCountry("China");                dbManager.saveOrUpdate(user);            }        } catch (DbException e) {            e.printStackTrace();            return false;        }        return true;    }    /**     * 按条件查找user     * 查询方法:     * 1.查询某张表内的所有对象, 可以通过org.xutils.DbManager#findAll(Class<T> class)。     * 2.根据对象的主键id来查找org.xutils.DbManager#findById(Class<T> entityType, Object idValue)。     * 3.查询对象org.xutils.db.Selector.该对象提供了where(), and(), or(),orderBy(), groupBy(), limit(), offset(),     * count()等方法来实现灵活的复杂查询,而且这些方法都返回对象本身,所以可以进行链式操作。     *     * @throws DbException     */    public List<User> dbFindUserByCondition(){        //List<User> users = db.findAll(User.class);        //showDbMessage("【dbFind#findAll】第一个对象:"+users.get(0).toString());        //User user = db.findById(User.class, 1);        //showDbMessage("【dbFind#findById】第一个对象:" + user.toString());        //long count = db.selector(User.class).where("name","like","%kevin%").and("email","=","caolbmail@gmail.com").count();//返回复合条件的记录数        //showDbMessage("【dbFind#selector】符合条件数目:" + count);//        //使用sql语句进行查询//        Cursor cursor = db.execQuery("select * from user where id<=5");//        if( cursor != null && !cursor.isLast() ){//            cursor.moveToNext();//            cursor.getString(cursor.getColumnIndex("NAME"));//            int count = cursor.getColumnCount();//            showDbMessage("【db.execQuery#selector】符合条件数目:" + count);//        }//        if (cursor!=null){//            cursor.close();//        }        //Sql查询语句使用说明:        //以"A"或"L"或"N"开头的人:WHERE name LIKE '[ALN]%'        //不以 "A" 或 "L" 或 "N" 开头的人:WHERE name LIKE '[!ALN]%'        //选取名字的第一个字符之后是"eorge"的人:where name like '_eorge'        //使用selector进行复合查询        List<User> users = null;        try {            users = dbManager.selector(User.class)                    .where("name", "like", "%kevin%")                    .and("email", "=", "caolbmail@gmail.com")                    .orderBy("regTime", true)//true为:降序desc                    .limit(2) //只查询两条记录                    .offset(2) //偏移两个,从第三个记录开始返回,limit配合offset达到sqlite的limit m,n的查询                    .findAll();        } catch (DbException e) {            e.printStackTrace();            return users;        }        return users;    }    /**     * 查找所有user     *     * @throws DbException     */    public List<User> dbFindAllUser(){        List<User> users = null;        try {            users = dbManager.findAll(User.class);        } catch (DbException e) {            e.printStackTrace();            return users;        }        return users;    }    /**     * 查找此user的orders     *     * @throws DbException     */    public List<Order> dbFindAllOrder( User user){        List<Order> orders = null;        try {            if ( user != null ) {                orders = user.getOrders(dbManager);            }        } catch (DbException e) {            e.printStackTrace();            return orders;        }        return orders;    }    /**     * 按条件删除user     * 删除方法:     * 1.删除一个对象或者对象List,     * 通过org.xutils.DbManager#deleteById(Class<T> entityType, Object idValue)来删除某个主键对应的记录。     * 2.org.xutils.DbManager#delete(Object entity)方法删除某个已经存在表中的对象。     * 3.org.xutils.DbManager#delete(Class<T> entityType)则会删除表中所有记录,相当于清空表数据。     * 4.WhereBuilder对象提供了类似Selector对象的and(), or(), expr()等方法来链式操作该对象本身,     * 复写的toString方法可以返回其对应的where条件语句.     *     * @throws DbException     */    public boolean dbDeleteUser( int UserId){//        //方法一:使用whereBuilder//        try {//            List<User> users = dbManager.findAll(User.class);//            if (users == null || users.size() == 0) {//                return false;//            }//            WhereBuilder whereBuilder = WhereBuilder.b();////            whereBuilder.and("id", ">", "5").or("id", "=", "1").expr(" and mobile > '2015-12-29 00:00:01' ");//            whereBuilder.and("id", "=", Integer.toString(UserId));//            dbManager.delete(User.class, whereBuilder);//        } catch (DbException e) {//            e.printStackTrace();//            return false;//        }        //方法二:使用Sql语句        try {            String sqlString = " DELETE FROM user WHERE id = " + Integer.toString(UserId);            dbManager.execNonQuery( sqlString);        } catch (DbException e) {            e.printStackTrace();            return false;        }//        db.delete(User.class);//删除所有数据//        db.delete(Order.class);//删除所有数据        //db.delete(users.get(0)); //删除第一个对象        //db.delete(User.class);//删除表中所有的User对象【慎用】        //db.delete(users); //删除users对象集合        //users =  db.findAll(User.class);        // showDbMessage("【dbDelete#delete】数据库中还有user数目:" + users.size());        return true;    }    /**     * 根据OrderId进行删除     * @param OrderId     * @return     */    public boolean dbDeleteOrder( int OrderId){        try {            WhereBuilder whereBuilder = WhereBuilder.b();            whereBuilder.and("id", "=", Integer.toString(OrderId));            dbManager.delete(Order.class, whereBuilder);        } catch (DbException e) {            e.printStackTrace();            return false;        }        return true;    }    /**     * 按条件筛选出user并更新其email、mobile信息     * 更新方法:     * 1.更新对象除了几个update方法外还可以通过replace方法实现。     * 2.通过update方法传入WhereBuilder对象和org.xutils.common.util.KeyValue对象实现对复合条件的记录更新指定的列和值。     * 3.通过org.xutils.DbManager对象中的一系列exec前缀的方法可以实现sql语句查询。     *     * @throws DbException     */    public boolean dbUpdateUserInfo( int UserId,String mobile){//        List<User> users = db.findAll(User.class);//        if (users == null || users.size() == 0) {//            showDbMessage("无任何用户信息,请先添加用户");//            return;//        }//          //第一种//        User firstUser = db.findFirst(User.class);//修改了第一条数据//        firstUser.setName("老王");//        firstUser.setEmail("0000000000@email.com");//        db.update(firstUser, "name", "email");        //第二种//        //方法一:使用whereBuilder//        try {//            WhereBuilder whereBuilder = WhereBuilder.b();//            whereBuilder.and("id", "=", Integer.toString(UserId));//            dbManager.update(User.class, whereBuilder,//                    new KeyValue("email", "0000000000@email.com")//                    , new KeyValue("mobile", mobile));//对User表中复合whereBuilder所表达的条件的记录更新email和mobile//        } catch (DbException e) {//            e.printStackTrace();//            return false;//        }        //方法二:使用sql语句        try {            String sqlStr = "UPDATE user SET email = 'www000@qq.com', mobile = '"                    + mobile + "'WHERE id = " + Integer.toString(UserId);            dbManager.execNonQuery( sqlStr);        } catch (DbException e) {            e.printStackTrace();            return false;        }        return true;    }    /**     * 根据OrderId更新subject信息     * @param OrderId     * @param subject     * @return     */    public boolean dbUpdateOrderInfo( int OrderId,String subject){        try {            WhereBuilder whereBuilder = WhereBuilder.b();            whereBuilder.and("id", "=", Integer.toString(OrderId));            dbManager.update(Order.class, whereBuilder,                    new KeyValue("subject", subject));        } catch (DbException e) {            e.printStackTrace();            return false;        }        return true;    }    /**     * 现在数据库版本号     */    public int getDBVersiona(){        int version = dbManager.getDatabase().getVersion() ;        return version;    }}

5.在其他类里使用操作函数

比如:

private MyDbHelper myDbHelper = new MyDbHelper();boolean isOk = myDbHelper.dbAddUsers();
原创粉丝点击