现在的位置: 首页 > 综合 > 正文

LitePal学习总结 (八)

2017年04月04日 ⁄ 综合 ⁄ 共 4365字 ⁄ 字号 评论关闭

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型的,否则会报错。


艾玛,先写到这边,累死



































抱歉!评论已关闭.