SQLのDBを扱っているとイメージすると、なんとなく理解できるのではないかと。
それも、「ContentResolverを使っているアプリの側」が、SQL DBを扱っているイメージです。
イメージ的にはこんな感じ。
- ContentResolverをアプリで取得し、Queryを発行します。引数は、SQLを書いていると思えばいい、というかそのまま。
- 結果が、Cursor型で帰ってきます。このCursor、一瞬JavaのArrayみたいにも見えますが、SQLの結果が帰ってきています。moveToNext()で、1のQuery(検索)に該当したRowが、順に走査できます。moveToNext()でとれたRowには、それぞれID列の値が入っています。
- 今度は、DBの値を変更する場合。DBのRowは、それぞれURIでアクセスできるので、変更したいIDが含まれるRowのURIと、変更したいIDとその値を、ContentValueに詰めて、insert()/update()します。
ざっと書くと、こんな感じです。サンプルコードは、本やネットに落ちていますので、ここには載せてません。
アドレス帳や、端末の写真を他のアプリから利用できるよう、ContentProvider/Resolverが使われています。
初めて聞いたとき、なんとなく、データを扱いやすい高級な仕組みのように感じてしまうのですが(少なくとも私は)、実際は普通のDBをアクセスと同じような仕組みです。ちょっとメソッドでラッパーしているような。
そういった意味では、「データを扱いやすい」とも言えますけど、、、
0 件のコメント:
コメントを投稿