2012-11-19 2 views
1

Я пытаюсь получить первый столбец, как показано ниже sql, но мой код показывает ошибку.Как получить данные первого столбца в базе данных sqlite?

SELECT subject FROM setting WHERE rowid=1 

    public void getSetting(){ 
    result = ""; 

SQLiteDatabase db = myDbHelper.getReadableDatabase(); 

Cursor c = db.query(true, "setting", new String[] {"subject", "language", "selection"}, "row=1", null, null, null, null, null); 

    for(c.moveToFirst();!(c.isAfterLast());c.moveToNext()){ 

result = result + c.getString(0); 
result = result + c.getString(0); 
    result = result + c.getString(0); 
    } 
    if (c.getCount() == 0)    
    result = result + "result not found"; 

c.close();  
db.close();   
myDbHelper.close(); 

}    
+0

и какую ошибку вы получаете? пожалуйста, зарегистрируйтесь в журнале ошибок – Lucifer

+0

Ваш запрос - SELECT subject FROM setting WHERE rowid = 1, тогда как оператор where в курсоре row = 1 - это просто опечатка? –

+0

Также 'for (c.moveToFirst();! (C.isAfterLast()); c.moveToNext())' может быть 'while (c.moveToNext())'. –

ответ

1

Ваши вещи немного трудно понять, но я думаю, что у меня есть идея, что вы хотите. Вы хотите, чтобы курсор возвращал только одну строку, где идентификатор строки является конкретным значением. И вам требуется только строка из одного столбца этой возвращенной строки. Я предполагаю, что основной проблемой является ваше обозначение колонки _id, которую вы ищете. Вы либо назвали его row, либо rowid, вам нужно проверить его дважды.

Кроме того, я надеюсь, что следующая перезапись устраняет другие проблемы, которые могут возникнуть.

public String getSetting() { 
    String result = ""; 
    String[] columns = {"subject"}; 
    String[] selectionArgs = {"1"}; 
    String LIMIT = String.valueOf(1); // <-- number of results we want/expect 

    SQLiteDatabase db = myDbHelper.getReadableDatabase(); 
    Cursor c = db.query(true, "setting", columns, "rowid = ?", selectionArgs, null, null, null, LIMIT);  

    if (c.moveToFirst()) { 
     result = result + c.getString(0); 
    } else { 
     result = result + "result not found"; 
    } 

    c.close();  
    myDbHelper.close(); 
    return result; 
}  

Кроме того, кроме того. Если вы получите сообщение об ошибке, вы должны опубликовать его, чтобы у нас появилась идея, что происходит.

Смежные вопросы