2012-01-17 361 views
0

我正在创建一个用户登录应用程序。我想在用布局文本浏览器登录时显示用户的帐户信息。这是一个布局的图像。 enter image description here从SQLite数据库检索数据

这里是我得到一个用户的数据的代码,当他登录:

public Cursor getUserData(String username){ 
    Cursor UserDataCursor = getReadableDatabase().rawQuery(
      "SELECT * FROM " + USER_TABLE_NAME + " WHERE " + 
      USER_NAME + "='" + username+"'", null); 
    return UserDataCursor; 

下面是与该类检索数据的代码:

   String email2 = cursor.getString(cursor.getColumnIndex("email")); 
       String name2 = cursor.getString(cursor.getColumnIndex("name")); 
       String pass2 = cursor.getString(cursor.getColumnIndex("pass")); 
       String gender2 = cursor.getString(cursor.getColumnIndex("gender")); 
       String date2 = cursor.getString(cursor.getColumnIndex("date")); 
       String country2 = cursor.getString(cursor.getColumnIndex("country")); 
       String reg2 = cursor.getString(cursor.getColumnIndex("reg")); 
       data+=email2+" "+name2+" "+pass2+" "+gender2+" "+date2+" "+country2+" "+reg2+"\n" ; 
       cursor.moveToNext(); 
      } 

它给一个空指针异常。这里有什么问题?我该如何解决它?

+0

我用Cursor cursor = dbopen.getUserData(username);在给定代码的顶部。 – 2012-01-17 22:23:27

+2

它可以是任何数量的东西。您应该在Logcat中发布您收到的错误,以帮助我们确定在哪里寻找。 – dymmeh 2012-01-17 22:25:07

+0

什么是光标?请也发布该代码。 cursor.getString( “电子邮件”);你试过这个吗? – kosa 2012-01-17 22:26:26

回答

0

我认为你不使用数据库适配器模式会让自己变得更难。

看看这里的如何建立更多的抽象和错误处理您的数据库的例子: http://www.devx.com/wireless/Article/40842/1954

这是很难验证你的代码,因为它是依赖于数据的。你的列名可能是错误的(或者可能缺少一个)。你的数据类型可能是错误的。你可能会得到一个没有行的游标,你需要检查。

顺便说一句,你开始之前做cursor.moveToFirst()吗?

此外,我们不知道发生错误的第70行是什么,因为行号在发布中丢失。

相关问题