Android の SQLiteDatabase 挿入メソッドが型変換を自動的に処理するかどうかに興味がありました。
これが私の例です:
列名が age の csv ファイルがあります。その型は INTEGER になります。
データベースとテーブルを既に作成しているとしましょう。
現在、CSVReader を使用して csv ファイルを解析しています。CSVReader は、各行を解析し、各値を String[] のインデックスに挿入します。
データの各行をデータベースに挿入するには、値を格納できる ContentValue オブジェクトを使用する必要があります。
//Parse each line and store in line...
ContentValue values = new ContentValue();
values.put(KEY_AGE, line[1]); // Assume line[1] is the age
database.insert(table, null, values);
age 値を文字列として保存し (上記のように)、それをテーブルに挿入すると、Android はデータベースに挿入する前に INTEGER への変換を処理しますか?
一連のテーブルをデータベースに挿入しようとしているため、これを求めています。配列を反復処理して、各 put 呼び出しを明示的に指定すると、よりきれいに見えます。つまり、次のようになります。
また、デザインの提案がある場合は、遠慮なく教えてください。
掃除
int i = 0;
for(String s : TransitContract.Routes.COLUMN_ARRAY) {
values.put(s, line[i]);
i++;
}
醜い
values.put(TransitContract.Routes.KEY_ROUTE_ID, line[0]);
values.put(TransitContract.Routes.KEY_AGENCY_ID, line[1]);
values.put(TransitContract.Routes.KEY_SHORT_NAME, line[2]);
values.put(TransitContract.Routes.KEY_LONG_NAME, line[3]);
values.put(TransitContract.Routes.KEY_DESCRIPTION, line[4]);
values.put(TransitContract.Routes.KEY_ROUTE_TYPE, Integer.parseInt(line[5]));
values.put(TransitContract.Routes.KEY_URL, line[6]);
values.put(TransitContract.Routes.KEY_COLOR, line[7]);
values.put(TransitContract.Routes.KEY_TEXT_COLOR, line[8]);
return mDatabase.insert(TransitContract.Routes.TABLE_NAME, null, values);