一:首先下载 ORMLite Jar 包

先去 ORMLite官网下载jar包 写博客时,目前最新的,对于Android为:ormlite-android-5.0.jar 和 ormlite-core-5.0.jar ;
然后分包处理,建议如图所示分包:

二:配置Bean类

@DatabaseTable(tableName = "Book")public class MyBean {    @DatabaseField(generatedId = true)    private int id;    @DatabaseField(columnName = "name")    public String name;    @DatabaseField(columnName = "author")    public String author;    @DatabaseField(columnName = "price")    public String price;    @DatabaseField(columnName = "pages")    public int pages;    public String getAuthor() {        return author;    }    public void setAuthor(String author) {        this.author = author;    }    public String getPrice() {        return price;    }    public void setPrice(String price) {        this.price = price;    }    public int getPages() {        return pages;    }    public void setPages(int pages) {        this.pages = pages;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

三:编写Helper类

public class MyDatabaseHelper extends OrmLiteSqliteOpenHelper {    public static final String DB_NAME = "BookStore.db";    public static final int DB_VERSION = 1;    public MyDatabaseHelper(Context context) {        super(context, DB_NAME, null, DB_VERSION);    }    @Override    public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {        try {            TableUtils.createTable(connectionSource, MyBean.class);        } catch (SQLException e) {            e.printStackTrace();        }    }    @Override    public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int oldVersion, int newVersion) {        System.out.println("MyDatabaseHelper.onUpgrade oldVersion=" + oldVersion + "  newVersion=" + newVersion);        try {            switch (oldVersion) {                case 1:                    getDao(MyBean.class).executeRaw("alter table Book add column book_type varchar(20)");                    //在数据库版本1的下一版本,Book表中新添加了 book_type 字段                case 2:                   // TableUtils.createTable(connectionSource, MyBean2.class);                   //在数据库版本2的下一版本,新增加了一张表                default:                    break;            }            //显然这样处理比较暴力            //TableUtils.dropTable(connectionSource, MyBean.class, true);            //onCreate(sqLiteDatabase, connectionSource);        } catch (SQLException e) {            e.printStackTrace();        }    }    private static MyDatabaseHelper instance;    /**     * 单例获取该Helper     *     * @param context     * @return     */    public static MyDatabaseHelper getHelper(Context context) {        if (instance == null) {            synchronized (MyDatabaseHelper.class) {                if (instance == null)                    instance = new MyDatabaseHelper(context);            }        }        return instance;    }    private Map daos = new HashMap<>();    public synchronized Dao getDao(Class clazz) throws SQLException {        Dao dao = null;        String className = clazz.getSimpleName();        if (daos.containsKey(className)) {            dao = daos.get(clazz);        }        if (dao == null) {            dao = super.getDao(clazz);            daos.put(className, dao);        }        return dao;    }    @Override    public void close() {        super.close();        for (String key : daos.keySet()) {            Dao dao = daos.get(key);            dao = null;        }    }}

四:编写DAO类

1:接口编写:

public interface MyDataImpl {    void insert(ArrayList beanArrayList);    void insert(MyBean myBean);    void update(String name, String price);    void update2(String columnName, String columnValue);    void update3(String queryColumnName, String queryColumnValue, String setColumnName, String setColumnValue);    void delete(String name);    int deleteAll();    ArrayList<String> queryPrice(String name);    String queryAuthor(String name, String price);    long queryCount();    ArrayList queryId(int id);    ArrayList queryAll();}
public class MyDataDao implements MyDataImpl {    private MyDatabaseHelper mHelper;    private Dao dao;    private Context mContext;    private static MyDataDao instance;    protected MyDataDao(Context context) {        this.mContext = context;        try {            mHelper = MyDatabaseHelper.getHelper(mContext);            dao = mHelper.getDao(MyBean.class);        } catch (SQLException e) {            e.printStackTrace();        }    }    public static MyDataDao getInstance(Context context) {        if (instance == null) {            synchronized (MyDataDao.class) {                if (instance == null) {                    instance = new MyDataDao(context);                }            }        }        return instance;    }    @Override    public void insert(MyBean myBean) {        try {            //事务操作           /* TransactionManager.callInTransaction(mHelper.getConnectionSource(), new Callable() {                @Override                public Void call() throws Exception {                    return null;                }            });*/            dao.create(myBean);            //dao.createOrUpdate(myBean);//和上一行的方法效果一样        } catch (SQLException e) {            e.printStackTrace();        }    }    @Override    public void insert(ArrayList beanArrayList) {        try {            dao.create(beanArrayList);        } catch (SQLException e) {            e.printStackTrace();        }    }    @Override    public void update(String name, String price) {        ArrayList list = null;        try {            list = (ArrayList) dao.queryForEq("name", name);            if (list != null) {                for (MyBean bean : list) {                    bean.setPrice(price);                    dao.update(bean);                    //dao.createOrUpdate(bean);//和上一行的方法效果一样                }            }        } catch (SQLException e) {            e.printStackTrace();        }    }    @Override    public void update2(String columnName, String columnValue) {        try {            //下面这两个代码的意思一样            dao.updateBuilder().updateColumnValue(columnName, columnValue).update();            //dao.updateRaw("update Book set " + columnName + "=?", new String[]{columnValue});        } catch (SQLException e) {            e.printStackTrace();        }    }    @Override    public void update3(String queryColumnName, String queryColumnValue, String setColumnName, String setColumnValue) {        try {            String sql = "update Book set " + setColumnName + "= '" + setColumnValue + "' where " + queryColumnName + "= '" + queryColumnValue + "'";            System.out.println("MyDataDao.update3 sql=" + sql);            dao.updateRaw(sql);            //dao.updateRaw("update Book set price= '33333元' where name= '西游记'");//等价于上面的写法        } catch (SQLException e) {            e.printStackTrace();        }    }    @Override    public void delete(String name) {        ArrayList list = null;        try {            list = (ArrayList) dao.queryForEq("name", name);            if (list != null) {                for (MyBean bean : list) {                    dao.delete(bean);                }            }        } catch (SQLException e) {            e.printStackTrace();        }    }    /**     * @return -1:删除数据异常  0:无数据     */    @Override    public int deleteAll() {        int number = -1;        try {            number = dao.deleteBuilder().delete();//返回删除的数据条数  例如:删除1条数据,返回1,依次类推。            //dao.deleteBuilder().where().eq("name", "记").reset();//????        } catch (SQLException e) {            e.printStackTrace();        }        return number;    }    @Override    public ArrayList queryPrice(String name) {        List list = null;        ArrayList strings = null;        try {            list = dao.queryForEq("name", name);            if (list != null) {                strings = new ArrayList<>();                for (MyBean myBean : list) {                    strings.add(myBean.getPrice());                }                /*for (int i = 0; i < list.size(); i++) {                    strings.add(list.get(i).getPrice());                }*/            }        } catch (SQLException e) {            e.printStackTrace();        }        return strings;    }    @Override    public String queryAuthor(String name1, String price1) {        List list = null;        String author = "";        try {            list = dao.queryBuilder().where().eq("name", name1).and().eq("price", price1).query();//上述相当与:select * from Book where name = name1 and price = price1 ;            if (list != null) {                for (MyBean myBean : list) {                    author = myBean.getAuthor();                }            }        } catch (SQLException e) {            e.printStackTrace();        }        return author;//说明:如果这个 author 是唯一的,可以这样的返回。如果是多个的话,要返回一个ArrayList 类型    }    /**     * @return 表中数据的个数     */    @Override    public long queryCount() {        long number = 0;        try {            number = dao.queryBuilder().countOf();        } catch (SQLException e) {            e.printStackTrace();        }        return number;    }    /**     * @param id 这个id 就是表中,每次插入数据,自己递增的id 字段     */    @Override    public ArrayList queryId(int id) {        ArrayList list = null;        try {            MyBean myBean = dao.queryForId(id);            if (myBean != null) {                list = new ArrayList<>();                list.add(myBean);            }            return list;        } catch (SQLException e) {            e.printStackTrace();        }        return list;    }    @Override    public ArrayList queryAll() {        ArrayList list = null;        try {            list = (ArrayList) dao.queryForAll();            if (list != null) {                return list;            }        } catch (SQLException e) {            e.printStackTrace();        }        return list;    }    public boolean delteTables(Context context, String DBname) {        //?????        return false;    }    /**     * 这个方法可以的     */    public boolean delteDatabases(Context context, String DBname) {        return context.deleteDatabase(DBname);    }}

五:测试


源码下载地址

参考文章:

Android快速开发–使用ORMLite操作数据库

鸿洋的博客:
Android ORMLite 框架的入门用法

Android 快速开发系列 ORMLite 框架最佳实践

SQL 语法

SQL UPDATE 语句

OrmLite 官网

更多相关文章

  1. WebView Android(安卓)调用js且须要获取返回结果
  2. android通过网络下载文字和Mp3的例子
  3. Android之使用传感器获取相应数据
  4. android5中数据存储方式详解
  5. android体系架构
  6. Android访问WCF(下篇)-客户端开发
  7. Android(安卓)系统数据库编程学习日志
  8. 3.1如何编写程序界面&3.2常见控件使用方法
  9. mybatisplus的坑 insert标签insert into select无参数问题的解决

随机推荐

  1. FFMpeg For Android之Ubuntu下编译
  2. Android设计原则/Android Design Princip
  3. Cocos2d-x移植android加入震动效果
  4. Android自用-----Intent 介绍
  5. Android(安卓)OKHTTP 网络请求出错重连--
  6. Android中shape使用
  7. [android][利用JNI技术在Android中调用、
  8. Android(安卓)Neon
  9. android通过代码来开启和关闭移动网络
  10. webservice android