2011-11-15 7 views
4

Cursor.getType()について理解できないことがありますが、なぜカーソルがレコードがないのに列がある場合に列のタイプを取得したいのですか?つまり、カーソルに問題がない場合は、getTypeメソッドを使用して問題なく列の型を取得できますが、レコードがない場合はこの例外がスローされます。質問はなぜ列型を取得するためにレコードが必要なのですか?列名を知っているだけでは、その型を取得するには不十分なのはなぜですか?これはばかげたことですか?cursor.getType()とCursorIndexOutOfBoundsException例外

答えて

9

のSQLiteは動的型付けを使用しているためにです:(我々が知る限り のSQLite以外のすべてのSQLデータベースエンジン、)

ほとんどのSQLデータベースエンジンは、静的な、剛性のタイピングを使用しています。 static の型指定では、値のデータ型はコンテナによって決定されます。つまり、値が格納されている特定の列の です。

SQLiteはより一般的な動的型システムを使用します。 SQLiteでは、値の データ型がその値そのものに関連付けられ、 コンテナには関連付けられません。

http://www.sqlite.org/datatype3.html

だから、値なし、なしのデータ型。

+0

シンプルだが非常に明確な説明。ありがとう。これは私が必要とする答えです。 –