2014-02-26 48 views
1

我想从数据库中获取名称并在textview中显示。当我的应用程序已经安装时,它工作正常,但是当应用程序被卸载并再次安装时,它会提供IndexOutOfBoundException如何从数据库获取名称?

这里是我的代码:

if(c.getString(0)==null){ 
    TextView w1=(TextView)findViewById(R.id.textVi1); 
    w1.setText("Welcome"); 
} else { 
    TextView w1=(TextView)findViewById(R.id.textVi1); 
    w1.setText("Welcome"+" "+c.getString(0)+","); 
} 

我应该如何获取数据时,应用程序卸载并重新安装?

+0

也许你'cursor'是空的,所以你不能拉'的getString(0)' (获取第一个元素)在一个空列表中。 – cosmincalistru

+0

可能是游标为空,无法从中判断。发布您的代码和堆栈跟踪。 –

+0

所以如何解决这个问题。 – user3304617

回答

1

试试这个。这可能有帮助。

public String getResult(String id) 
{ 
    String name = null; 
    try 
    { 
     Cursor c = null; 
     c = db.rawQuery("select name from person where id=" + "\""+id+"\"", null); 
     c.moveToFirst(); 
     name = c.getString(c.getColumnIndex("name")); 
     c.close(); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    return name; 
} 
1

之前光标呼吁getString(),确保它指向一个有效行:

if (c.moveToFirst()) { 
    // use c.getString(0) 
} else { 
    // don't access cursor, no data 
} 
相关问题