説明するのは少し難しいですが、ここに行きます:
これに少し似たデータベーステーブルがあります(この質問のために非常に単純化されています)。
_id | area_link | text1 | text2 | text3 | text4
1 1 this is one example
2 1 this is another example
3 2 this is one example
4 2 this is another example
5 2 this is another example
したがって、area_link が 2 に等しいデータを検索するクエリを作成できますが、次のような配列を何らかの形で作成したいと考えています。
thisisoneexample
thisisanotherexample
しかし、それはこれにはなりません(これは単純なクエリで得られるものです):
thisisoneexample
thisisanotherexample
thisisanotherexample
データベース ヘルパー クラスでの実際のクエリの例を次に示します。
public Cursor fetchComponentSpecForArea(long areaId, String componentType, String specSaved) throws SQLException {
Cursor mCursor =
rmDb.query(true, DAMAGED_COMPONENTS_TABLE, new String[] {
AREA_LINK,
COMPONENT_TYPE,
MANUFACTURER,
TEXT1,
TEXT2,
TEXT3,
TEXT4,
NOTES_SPEC,
SPEC_SAVED},
AREA_LINK + " = " + areaId + " AND " + COMPONENT_TYPE + " = ? AND " + SPEC_SAVED + " = ?",
new String[] {componentType, specSaved},
null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
そして、メインコードでこれを呼び出す方法の例:
final Cursor componentSpecForAreaCursor = (Cursor) rmDbHelper.fetchComponentSpecForArea(areaId, componentType, specSaved);
if (componentSpecForAreaCursor.moveToFirst()){
String manufacturer = RMUtilities.notEmpty(componentSpecForAreaCursor.getString(componentSpecForAreaCursor.getColumnIndex(RMDbAdapter.MANUFACTURER)), "");
String text1 = RMUtilities.notEmpty(componentSpecForAreaCursor.getString(componentSpecForAreaCursor.getColumnIndex(RMDbAdapter.TEXT1)), "");
String text2 = RMUtilities.notEmpty(componentSpecForAreaCursor.getString(componentSpecForAreaCursor.getColumnIndex(RMDbAdapter.TEXT2)), "");
String text3 = RMUtilities.notEmpty(componentSpecForAreaCursor.getString(componentSpecForAreaCursor.getColumnIndex(RMDbAdapter.TEXT3)), "");
String text4 = RMUtilities.notEmpty(componentSpecForAreaCursor.getString(componentSpecForAreaCursor.getColumnIndex(RMDbAdapter.TEXT4)), "");
String notes_spec = RMUtilities.notEmpty(componentSpecForAreaCursor.getString(componentSpecForAreaCursor.getColumnIndex(RMDbAdapter.NOTES_SPEC)), "");
rmDbHelper.saveDamagedComponentSpec(componentId, manufacturer, text1, text2, text3, text4, notes_spec);
}
だから私はしなければならないと思います:
create an array,
query the database,
if cursor > 0 then go to first and:
build a string from the relevant database fields,
put this into array
build next string from the relevant database fields,
check if this matches any of entries in array if not:
put this into array
など、しかし、いくつかの助けを借りて行うことができます!! 前もって感謝します。