关于Android数据库开发中LitePal的配置和使用
在使用LitePal进行Android数据库开发时,总结了一些会遇到的问题:
1、配置LitePal环境
(1)下载LitePal框架的jar包,地址http://download.****.net/download/qq_25436193/10212942
(2)在Android studio中导入jar包,如图
(3)然后一定要,Add as library,如图
我这里add过了,可以参考下
(4)然后,在assets目录下新建litepal.xml文件,如图
(5)最后,在配置文件中添加:android:name="org.litepal.LitePalApplication"
2、创建数据库
(1)新建News类:作为数据库中的表结构
(2)得到数据库:SQLiteDatabase db = Connector.getDatabase();
(3)这里通过adb和sqlite3来查询数据库信息
步骤:配置好path;adb root;adb shell;cd data/data/com.example.diy.litepaltest/databases;
sqlite3 News.db(打开数据库News.db);.table(查看数据库中的表);.schema(查看建表信息);pragma table_info(News)(查看表的数据结构);
3、数据库操作
(1)插入数据
LitePal要求所有的实体类都必须继承自DataSupport类,然后就可以进行CRUD,如图
News news = new News(); news.setTitle("this is title3"); news.setContent("this is content3"); news.setPublishDate(new Date()); news.save();
(2)查询数据
a.查询News表中id为1的记录:News news = DataSupport.find(News.class,1);
b.查询News表中第一条数据:News firstNews = DataSupport.findFirst(News.class);
c.查询News表中最后一条数据:News lastNews = DataSupport.findLast(News.class);
d.查询News表中所有数据:List<News> newsList = DataSupport.findAll(News.class);
e.查询News表中所有评论数大于0的数据:List<News>
newsList = DataSupport.where("commentcount >?", "0").find(News.class);
f.查询title和content两列数据:List<News> newsList = DataSupport.select("title","content").where("commentcount >?", "0").find(News.class);
......
(3)表关联
在News表中添加:private List<Comment> commentList = new ArrayList<>();
在Comment表中添加:private News news = new News();
最后insert数据时
Comment comment1 = new Comment(); comment1.setContent("好评!"); comment1.setPublishDate(new Date()); comment1.save(); Comment comment2 = new Comment(); comment2.setContent("赞一个!"); comment2.setPublishDate(new Date()); comment2.save(); News news = new News(); news.getCommentList().add(comment1); news.getCommentList().add(comment2); news.setTitle("新闻标题2"); news.setContent("新闻内容2"); news.setPublishDate(new Date()); news.setCommentCount(news.getCommentList().size()); news.save();
(4)更新数据
ContentValues values = new ContentValues(); values.put("title","这是另一个标题"); DataSupport.update(News.class,values,2);
(5)删除数据
DataSupport.delete(News.class,1);