日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LitePal数据的存储

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LitePal数据的存储 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里來完整地學習一下LitePal存儲數據的所有用法。

1、在上一篇中我們只建了News一張表,如需要建多張表一樣的操作,使用LitePal就可以把相應的表自動創建出來

2、繼承了DataSupport類之后

這些實體類就擁有了進行CRUD操作的能力,那么比如想要存儲一條數據到news表當中,可以這樣:

public void SaveData() {News n = new News();n.setId(1);//可不用這個IDn.setTitle("這里是標題");n.setContent("內容");n.setPublishDate(new Date());n.setCommentCount(1);Issave = n.save();//返回值}

很好操作的幾行代碼,這里不需要SQLiteDatabase,不需要ContentValues,不需要通過列名組裝數據,甚至不需要指定表名,只需要new出一個News對象,然后把要存儲的數據通過setter方法傳入,最后調用一下save()方法就好了,而這個save()方法就是從DataSupport類中繼承而來的了

看到了那個save()方法,save()方法還是有返回值的,我們可以根據返回值來判斷存儲是否成功

if (Issave) {Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_SHORT).show();} else {Toast.makeText(MainActivity.this, "失敗啦", Toast.LENGTH_SHORT).show();}

3、save()方法返回的是一個布爾值,用于表示存儲成功還是失敗,但同時也說明這個方法是不會拋出異常的。如果要存儲失敗的話就拋出異常,而不是返回一個false,那就還可以用另一個saveThrows()方法來代替

public void SaveData() {News n = new News();n.setId(1);n.setTitle("這是標題");n.setContent("內容");n.setPublishDate(new Date());n.setCommentCount(1);n.saveThrows();}

saveThrows()方法來存儲數據,一旦存儲失敗就會拋出一個DataSupportException異常,我們可以通過對這個異常進行捕獲來處理存儲失敗的情況

4、使用的insert()方法來存儲數據時是有返回值的,返回的是插入行對應的id。但LitePal中的save()方法返回的是布爾值,那么我要拿到存儲成功之后這條數據對應的id,所以,LitePal使用了一種比較好的的做法,我們在每個實體類中都定義了一個id字段,當調用save()方法或saveThrows()方法存儲成功之后,LitePal會自動將該條數據對應的id賦值到實體類的id字段上。

public void SaveData() {News n = new News();n.setId(1);n.setTitle("這是標題");n.setContent("這是內容");n.setPublishDate(new Date());n.setCommentCount(1);Log.d("TAG", "ID是 " + n.getId());Issave = n.save();Log.d("TAG", "ID是 " + n.getId());}

這里在save之前打印一下news的id,在save之后再打印一次,然后運行:

在save之前打印的id,,在save之后打印的id,說明此時id已經被賦值了

5、LitePal對集合數據的存儲還專門提供了一個方法,比如說我們有一個News集合,那么應該怎樣去存儲這個集合中的每條News

List<News> newsList; ... for (News news : newsList) { news.save(); }

那么通過一個循環來遍歷出這個集合中的每一個News對象,然后逐個調用save()方法。這樣的寫法當然是可以的,但是效率會相對來說低一些,因為調用save()方法的時候除了會執行存儲操作之外,還會去分析News類的關聯關系,那么每次循環都去重新分析一遍關聯關系顯然是比較耗時的。因此,LitePal提供了一個saveAll()方法,專門用于存儲集合數據的

List<News> newsList; ... DataSupport.saveAll(newsList);

saveAll()方法接收一個Collection集合參數,只需要把待存儲的集合數據傳入就可以。

DEMO下載:

CSDN:下載

百度網盤下載:下載? 提取碼:e1ey?

?

總結

以上是生活随笔為你收集整理的LitePal数据的存储的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。