0

私はAndroid Sqliteでいくつかの実験を行っています。基本的に、私はユーザーがいくつかの文を入力できるようにするアプリを作成しており、アプリはあいまいな単語 (つまり、複数の意味を持つ単語) を表示する必要があります。私はテーブルtblWordsを持っています(フィールドは次のとおりです:_id、単語、意味)各単語には、breakのような2つの意味があります

例えば:

TblWords
_id 単語の意味
1 BREAK 進行中のアクティビティを中断する突然の出来事
2 BREAK 何かを (仕事として) 行うことの一時停止

等...

私がやりたいことは、アプリが特定の条件で最初のレコードのみを表示し、それ以外の場合は2番目のレコードを表示することです。どうすればこのようなことを達成できますか? 始めるためのアイデアが本当に必要です。どんな助けでも本当に感謝しています。また、考慮すべき点もいくつか挙げてください。再度、感謝します。

アップデート:

これは私がこれまでに試したことです。

DBHelper.class

  public Cursor getAllWords()
{ 
            return this.myDataBase.query(DB_TABLE, new String[] { 
                    KEY_ID, KEY_WORD, KEY_MEANING }, null, null, null, null, null);

}

MainActivity.class

ArrayList<String> colWords = new ArrayList<String>();
ArrayList<String> colMeanings = new ArrayList<String>();
String[] words;
String[] meanings;

    cursor = dbHelper.getAllWords();

    colWords.clear();///added code
    colMeanings.clear();///added code


    if (cursor != null) {
        if (cursor.moveToFirst()) {
            do {
                colWords.add(cursor.getString(1)); 
                colMeanings.add(cursor.getString(2));   
                String records = cursor.getString(0);

                Log.d("Records", records);
            } while (cursor.moveToNext());
        }
    }
4

2 に答える 2

1

テーブルが次のようになるように、別の列を追加definition_numberします。

_id 単語 定義_番号 意味

1 BREAK ブレークの 1 つの最初の定義

2 BREAK休憩の 2 秒の定義

3 CONTINUE継続のための 1 つの最初の定義

4 CONTINUE継続のための 2 秒の定義

すべての最初の定義が必要な場合

this.myDataBase.query(DB_TABLE, new String[] {KEY_ID, KEY_WORD, KEY_MEANING}, 
       "defintion_number = 1", null, null, null, null) 

そして、すべての2番目の定義が必要な場合

this.myDataBase.query(DB_TABLE, new String[] {KEY_ID, KEY_WORD, KEY_MEANING}, 
       "defintion_number = 2", null, null, null, null)

問題に対処するわけではありませんが、データをWordsDefinitionsの 2 つのテーブルに分割し、必要に応じて結合することを検討することをお勧めします。これは接線であるため、詳細には触れませんが、スキーマの正規化を検索して、これを行う理由の詳細を確認してください。

于 2013-10-08T16:35:19.887 に答える