2011-11-23 25 views
1

Uriを使わずにデータベースにデータを挿入することができました。しかし、contentResolverを使用しているときは、Uriに何かをさせる必要があります。 getContentResolver().insert(CONTENT_URI, values);同様なぜコンテンツプロバイダはURIを使用し、データベースを使用しないのですか?

しかし、データベースクエリの実行中に、私たちはすべてのウリは必要ありません。 db.execSQL(String query);のように。どうしてこれなの?

+1

そこで質問は何ですか?クローズする –

+0

投票、私は質問を見つけることができません... – WarrenFaith

+0

私たちはExecSqlの対)(.insertを使用しない理由の質問があると思います。 –

答えて

1

私はこの質問を閉じることとしていると思いますが、私はあなたがコンテンツリゾルバを使用するときにCONTENT_URIを使用する必要がなぜ何を求めていることだと思いますが、あなたはいけないデータベースを使用している場合?

Content Provider

コンテンツレゾルバはちょうどデータベース

コンテンツプロバイダストアより多くの機能を提供し、データを取得し、すべてのアプリケーション からのアクセスを可能にできますので、これがあります。彼らは アプリケーションでデータを共有する唯一の方法です。すべてのAndroidパッケージ がアクセスできる共通の記憶領域はありません。

Androidには、共通データタイプ (オーディオ、ビデオ、画像、個人の連絡先情報など)用の多数のコンテンツプロバイダが同梱されています。 には、android.providerパッケージにリストされているものがあります。次のことができ クエリ(いくつかのために、 あなたがデータを読み込むための適切な許可を取得する必要があります、が)それに含まれるデータのためにこれらのプロバイダ。クエリが開始され

Androidシステムは、クエリの対象だとそれがアップ 稼働中であることを確認するコンテンツ プロバイダを識別します。

データベースとデータベース

を(あなたは1を書きがない限り)、それはコンテンツプロバイダを経由して任意のアプリケーションからアクセスすることはできません。 db.execSQLを使用すると、データベースにのみ照会し、コンテンツプロバイダには照会しないため、CONTENT_URIを指定する必要はありません。 dbオブジェクトはデータストアです。

1

Content providersは、単にexecSQLを使用するよりもはるかに強力で(例:もっと多くのSQLにアクセスできます)、より安全です(例:SQLインジェクション攻撃に開放)。

これは私がこれをサポートするためのいくつかのドキュメントを見つけることができます知っている、安価な答えです。私はリンクを探し続けるつもりです。

+0

すべての簡単な質問は閉じられているか、迅速に回答されているか、または質問者が回答をマークしていません。私はポイントを得ることができる唯一の方法です:(私はどのくらいの質問が閉鎖されているが、うーん、私は1%笑だと思います。 –

関連する問題