2013-04-22 100 views
1

当我运行SQLite游标查询时,它无法在edittext中显示结果字符串。Android如何从SQLite光标查询获取返回值字符串并在Edittext中显示它?

它无法与logcat的消息:

java.lang.RuntimeException: Unable to start activity 
android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1 

如何我可以从游标的查询结果值的字符串,并在EditText上显示呢?

public class Books extends Activity implements OnClickListener { 

private BooksData books; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.books); 

     books = new BooksData(this); 

     } 

     SQLiteDatabase db1 = books.getReadableDatabase(); 

     SEARCH_TERM = "math"; 

     EditText edittext = (EditText) findViewById(R.id.edittext1); 

     // Get the value from TITLE when the TOPIC value is specified, ie such as "math". 

     Cursor cursor_2 = db1.query(TABLE_NAME, new String[] {"_id", "TOPIC", "TITLE"}, "TOPIC = ?", new String[]{ ""+SEARCH_TERM+"" }, null, null, null, null); 

     String TEMP_DATA = cursor_2.getString(2); 

     edittext.setText(TEMP_DATA); 

books.close(); 
cursor_2.close(); 
} 

回答

2

您需要先移动光标中的第一条记录,然后才能从数据中提取数据。

Cursor cursor_2 = db1.query(TABLE_NAME, new String[] {"_id", "TOPIC", "TITLE"}, "TOPIC = ?", new String[]{ ""+SEARCH_TERM+"" }, null, null, null, null); 

if (cursor_2 == null) 
    return; 

try{ 
    if (cursor_2.moveToFirst()) // Here we try to move to the first record 
     edittext.setText(cursor_2.getString(2)); // Only assign string value if we moved to first record 
}finally { 
    cursor_2.close(); 
} 
+0

dymmeh,您的解决方案效果很好!感谢您提供答案。 – user2308699 2013-04-22 22:05:03

+0

dophie,你的解决方案效果很好!感谢您提供答案。 – user2308699 2013-04-22 22:07:05

+0

@ user2308699 - 没问题。如果您觉得这是正确的解决方案,请务必将其标记为答案。 – dymmeh 2013-04-23 00:33:05

相关问题