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型的,否则会报错。
艾玛,先写到这边,累死