4

理解できないことCursor.getType()がありますが、カーソルにレコードがないのに列がある場合に列タイプを取得したいのに、なぜこのばかげた例外が発生するのか説明できますか?つまり、カーソルにレコードがある場合は問題ありませんが、getTypeメソッドを使用して列タイプを問題なく取得できますが、レコードがない場合はこの例外がスローされます。

問題は、列タイプを取得するためにレコードが必要なのはなぜですか?列名を知っているだけでは、そのタイプを取得するのに十分ではないのはなぜですか?これはばかげていますか?

4

1 に答える 1

9

これは、SQLiteが動的型付けを使用しているためです。

ほとんどのSQLデータベースエンジン(私たちが知る限り、SQLite以外のすべてのSQLデータベースエンジン)は、静的で厳密な型指定を使用します。静的型付けでは、値のデータ型はそのコンテナー(値が格納されている特定の列)によって決定されます。

SQLiteは、より一般的な動的型システムを使用します。SQLiteでは、値のデータ型は、コンテナーではなく、値自体に関連付けられています。

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

したがって、値もデータ型もありません。

于 2011-11-15T09:10:03.983 に答える