Sqlite-android:如何比较字符串并从数据库中获取该String的id?

时间:2012-03-25 10:00:23

标签: android sqlite

您好我有“Table_Subject”,我需要将主题名称与“table_subject”的主题进行比较 主题名称和该主题的返回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;

}

1 个答案:

答案 0 :(得分:6)

我建议您在这里使用SQL而不是java,因为它更容易,创建一个检查匹配字符串的适当查询,并返回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 - 字符串,包含要比较的字符串的列的名称
  • NOT_EXIST - int,-1,表示找不到它。