LitePal框架是郭神的开源框架,郭神博客
惯例,文章开播前先膜拜一下郭神。
下面正式开播,本篇我们要介绍的是LitePal的查询操作。我擦,终于到最后了。。。
先看方法描述
举例子:比如我现在想要查询News数据表里的id=4的数据。
来人,上代码
/**
* 根据id查找
*/
private void findDataById() {
News news1 = DataSupport.find(News.class, 4);
Log.i(TAG,"Title: " + news1.getTitle() + "Content: " + news1.getContent());
}
然后去onCreate()方法里调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase db = Connector.getDatabase();
// addMyFirstNews();
// addNewsAndIntroduce();
// addNewsAndComments();
// addNewsAndCategories();
// updateNewsInfo();
// updateAllUseConditions();
// updateAllUseConditions2();
// deteleNews();
// deteleNews2();
// deleteAllUseConditions();
// deleteAllUseConditions2();
findDataById();
}
让我们来看一下Log打印出来的东西
让我们看看数据库里的News表的id=4的数据内容是啥
经过对比,数据一致,说明我们查询结果是正确的。
此外,还有查询第一条,查询最后一条语句的方法。
先看查询第一条数据的方法的描述
上代码实践
/**
* 查询第一条数据
*/
private void findFirstData() {
News news2 = DataSupport.findFirst(News.class);
Log.i(TAG,"Title: " + news2.getTitle() + "Content: " + news2.getContent());
}
然后去onCreate()方法里调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase db = Connector.getDatabase();
// addMyFirstNews();
// addNewsAndIntroduce();
// addNewsAndComments();
// addNewsAndCategories();
// updateNewsInfo();
// updateAllUseConditions();
// updateAllUseConditions2();
// deteleNews();
// deteleNews2();
// deleteAllUseConditions();
// deleteAllUseConditions2();
// findDataById();
findFirstData();
}
让我们来看看Log打印出来的数据
对比一下数据库里的数据
经过对比,发现是正确的。
再来看查询最后一条数据的方法描述
上代码实践一下
/**
* 查询最后一条数据
*/
private void findLastData() {
News news3=DataSupport.findLast(News.class);
Log.i(TAG,"Title: " + news3.getTitle() + "Content: " + news3.getContent());
}
然后去onCreate()方法里去调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase db = Connector.getDatabase();
// addMyFirstNews();
// addNewsAndIntroduce();
// addNewsAndComments();
// addNewsAndCategories();
// updateNewsInfo();
// updateAllUseConditions();
// updateAllUseConditions2();
// deteleNews();
// deteleNews2();
// deleteAllUseConditions();
// deleteAllUseConditions2();
// findDataById();
// findFirstData();
findLastData();
}
让我们来看看Log打出来的结果
让我们来看看News数据表里的最后一条数据
那你要说了,我擦,我能不能一下子啊查完表里的所有的数据呀?妥妥的呀,郭神威武。
先来看查询表所有数据的方法描述
上代码,开搞
/**
* 查询所有的数据
*/
private void findAllData() {
List<News> newsList = DataSupport.findAll(News.class);
for(News newslist:newsList){
Log.i(TAG,"Title: " + newslist.getTitle() + "Content: " + newslist.getContent());
}
}
然后去onCreate()方法里调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase db = Connector.getDatabase();
// addMyFirstNews();
// addNewsAndIntroduce();
// addNewsAndComments();
// addNewsAndCategories();
// updateNewsInfo();
// updateAllUseConditions();
// updateAllUseConditions2();
// deteleNews();
// deteleNews2();
// deleteAllUseConditions();
// deleteAllUseConditions2();
// findDataById();
// findFirstData();
// findLastData();
findAllData();
}
完事,然后我们来看看Log打印出来的结果
让我们再来对比一下数据表News中的数据
发现结果一样,搞定。
到了这个时候,我知道你想说啥,你想说,我不想一个一个查,我也不想一下子查所有的,我想查某几个怎么办?嘿嘿嘿,好办,你过来,我保证不打死你(笑),其实郭神也为我们封装好了,秘密就是在findall方法里的第二个参数中。
我们来演示一下,假设,我们想要一次性查询id是2和6的数据,那么我可以这样写。
List<News> newsList2 = DataSupport.findAll(News.class,2,6);
还是上代码来实践一下吧
/**
* 查询某几列
*/
private void findAllBySomeId() {
List<News> newsList2 = DataSupport.findAll(News.class,2,6);
for(News newslist:newsList2){
Log.i(TAG,"Title: " + newslist.getTitle() + "Content: " + newslist.getContent());
}
}
然后去onCreate()方法里调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase db = Connector.getDatabase();
// addMyFirstNews();
// addNewsAndIntroduce();
// addNewsAndComments();
// addNewsAndCategories();
// updateNewsInfo();
// updateAllUseConditions();
// updateAllUseConditions2();
// deteleNews();
// deteleNews2();
// deleteAllUseConditions();
// deleteAllUseConditions2();
// findDataById();
// findFirstData();
// findLastData();
//findAllData();
findAllBySomeId();
}
好啦,你的要求我已经满足你啦。让我们来看看Log打印出来的结果
让我们来看看数据表News里的id=2和id=6的数据
经过比较,发现结果是一样的,说明我们成功啦。
findall()方法的第二个参数也接受数组形式的,比如我们把id=2和id=6放入一个ids的数组中,然后再传入也是可以的。
代码如下:
/**
* 查询某几列
*/
private void findAllBySomeId() {
long[] ids=new long[]{2,6};
List<News> newsList2 = DataSupport.findAll(News.class,ids);
for(News newslist:newsList2){
Log.i(TAG,"Title: " + newslist.getTitle() + "Content: " + newslist.getContent());
}
}
这里要注意的是,数组的类型要是long型的,否则会报错。
艾玛,先写到这边,累死