2012-03-25 16 views
2

こんにちは、私は "Table_Subject"を持っていると私は "table_subject"のとの主題の名前を比較する必要があります
その件名の名前と返さID。私はそれをするが、それはいかなる価値も返さない。
参考のためのサンプルコードです。
ヒントやコードを教えてください。
ありがとうございます。Sqlite-android:文字列を比較し、その文字列のIDをデータベースから取得する方法は?

public int getSubjectId(String subjectName) 
{ 
    int id2 = 0; 
    try 
    { 
     SQLiteDatabase db = this.getWritableDatabase();  
     String selectQuery= "SELECT s_id FROM " + TABLE_SUBJECT; 

     Cursor cursor = db.rawQuery(selectQuery, null); 
      // looping through all rows and adding to list 
      if (cursor.moveToFirst()) 
      { 
       do { 
        if(subjectName.equals(cursor.getString(1))) 
        { 
         id2=cursor.getInt(0);      
        }   
        } 
       while(cursor.moveToNext()); 
       db.close(); 
      } 


    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    return id2; 

} 
+0

ロガーを追加して、 'cursor.getString(1)'とsubjectName ...を印刷してみてください。 –

+0

両方の値(subjectNameと(cursor.getString(1))を印刷してみてください。何が間違っていたのですか。 –

答えて

6

私は、それが簡単であるとして、あなたは、Javaのかわりに、ここでSQLを使用することを示唆して一致する文字列をチェックし、適切なクエリを作成し、IDを返します:

public int getIdForString(String str) { 
    int res; 
    SQLiteDatabase db = getReadableDatabase(); 
    Cursor cursor = db.query(MY_TABLE, new String[] { COLUMN_ID, 
      }, COLUMN_STRING + "=?", 
      new String[] { str }, null, null, null, null); 
    if ((cursor != null) && (cursor.getCount() > 0)) { 
     cursor.moveToFirst(); 
     res = cursor.getInt(cursor.getColumnIndex(COLUMN_ID)); 
    } 
    else { 
     res = NOT_EXIST; 
    } 
    if (cursor != null) { 
     cursor.close(); 
    } 
    return res; 
} 

ますのでご注意くださいこの例では多くの定数を使用していましたが、これははるかに簡単でエラーが発生しにくいためです。この場合には、定数である:

  • MY_TABLE - 文字列テーブル名
  • COLUMN_ID
  • - 文字列ID欄
  • COLUMN_STRING
  • の名前 - 文字列に文字列と列の名前compare
  • NOT_EXIST - それが見つからなかったことを示す-1。
+0

NOT EXISTにはエラーがあります。 –

関連する問題