5

これは、テーブルを作成するために使用するクエリです

create table site_table(
   _id integer primary key autoincrement,
   name_site text,
   url text,
   login text,
   pass text
);

電話Cursor.getColumnNames()したところ、列の順序が であることに気付きましたid, login, pass, name, url

したがって、値が必要な場合は、 index で取得する必要がありますCursor.getString(index)。デバッグするまでは、間違ったインデックスを呼び出して混乱していましたが、今ではなぜ SQLite がそのように保存するのでしょうか? 私が作成した方法に従わないのはなぜid, name_site, url, login and passですか?

ありがとう

4

4 に答える 4

5

したがって、値が必要な場合は、インデックス Cursor.getString(index) で取得する必要があります

たとえば、この理由から、常に使用する必要があります

c.getString(c.getColumnIndex("ColName")); // or better getColumnIndex(CONSTANT)

この方法は私たち全員を救い、間違った結果が得られないようにします. 一般に、この方法は推奨されており、分離されたクラスCOLUMN_NAMESとして保存することもCONSTANTS非常に便利で効率的な方法です。

注:順序は射影に依存します。select name, lastname from table

于 2013-03-31T18:13:35.097 に答える
1

カーソル内の列の順序は射影によって異なります。正しい列インデックスを使用していることを確認するには、カーソルのc.getString(c.getColumnIndexOrThrow("COLUMN_NAME"))場所を使用します。c

于 2013-03-31T18:13:03.897 に答える
1

そのデータは、テーブルを作成した順序ではなく、クエリで要求した順序で並べられます。したがって、そのカーソルを生成したクエリの順序を変更した可能性があります。

于 2013-03-31T18:10:51.217 に答える