Java 在android中从SQLiteDatabase获取数据时获取NullPointerException

Java 在android中从SQLiteDatabase获取数据时获取NullPointerException,java,android,sqlite,android-sqlite,Java,Android,Sqlite,Android Sqlite,我正在使用扩展SQLiteOpenHelper的公共类DatabaseHandler 这是我从数据库获取所有数据的方法,看起来很好,但是崩溃了,活动显示为nullpointerException。代码中有什么需要更改的吗?我只有一行信息 // Getting all data public Cursor getData(String UserName, String Email, String Password, String BirthDate, String PinCode

我正在使用扩展SQLiteOpenHelper的公共类DatabaseHandler 这是我从数据库获取所有数据的方法,看起来很好,但是崩溃了,活动显示为nullpointerException。代码中有什么需要更改的吗?我只有一行信息

// Getting all data

public Cursor getData(String UserName, String Email, String Password,
        String BirthDate, String PinCode, String Country, String PaypalID,
        String mobile, String FBID) {

    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_DATA, new String[] { "UserName",
            "Email", "Password", "BirthDate", "PinCode", "Country",
            "PaypalID", "mNUMBER", "FBID" }, null, null, null, null, null,
            null);

    if (cursor != null) {

        if (cursor.moveToFirst()) {
            do {
                Log.i("counttttttttttttt", "" + cursor.getCount());

                UserName = cursor.getString(0);
                Email = cursor.getString(1);
                Password = cursor.getString(2);
                BirthDate = cursor.getString(3);
                PinCode = cursor.getString(4);
                Country = cursor.getString(5);
                PaypalID = cursor.getString(6);
                mobile = cursor.getString(7);
                FBID = cursor.getString(8);

            } while (cursor.moveToNext());
        }
    }

    db.close();
    return cursor;
}
在客户活动方面

db = new DatabaseHandler(AccountActivity.this);

   // Declared all String

    db.getData(name, email, password, birthdate, pincode, country, paypal,
            mobile, fbid);
DatabaseHandler db = new DatabaseHandler(AccountActivity.this);

    // getAllData();
    Cursor cursor = db.getData();

if (cursor.moveToFirst()) {
        do {
            Log.i("counttttttttttttt", "" + cursor.getCount());

            name = cursor.getString(0);
            email = cursor.getString(1);
            password = cursor.getString(2);
            birthdate = cursor.getString(3);
            pincode = cursor.getString(4);
            country = cursor.getString(5);
            paypal = cursor.getString(6);
            mobile = cursor.getString(7);
            fbid = cursor.getString(8);

        } while (cursor.moveToNext());
    }
db.close;
并根据需要将这些字符串设置为TextView


但是上面写着nullpointer异常。

兄弟们,我发现获取数据的方法完全错了。。
            if( cursor !=null && cursor.getCount() != 0)
        {
            while( cursor.moveToNext() )
            {
                UserName = cursor.getString(0);
                Email = cursor.getString(1);
                Password = cursor.getString(2);
                BirthDate = cursor.getString(3);
                PinCode = cursor.getString(4);
                Country = cursor.getString(5);
                PaypalID = cursor.getString(6);
                mobile = cursor.getString(7);
                FBID = cursor.getString(8);
                //add data to a list
            }
        }
正确的方法是

// Getting all data
public Cursor getData() {

    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_DATA, new String[] { "UserName",
            "Email", "Password", "BirthDate", "PinCode", "Country",
            "PaypalID", "mNUMBER", "FBID" }, null, null, null, null, null,
            null);

    return cursor;
}
表示方法中没有参数,就像我以前做的那样,因为我们没有添加或更新任何字段,所以在获取数据时不需要这样做

在活动中,

db = new DatabaseHandler(AccountActivity.this);

   // Declared all String

    db.getData(name, email, password, birthdate, pincode, country, paypal,
            mobile, fbid);
DatabaseHandler db = new DatabaseHandler(AccountActivity.this);

    // getAllData();
    Cursor cursor = db.getData();

if (cursor.moveToFirst()) {
        do {
            Log.i("counttttttttttttt", "" + cursor.getCount());

            name = cursor.getString(0);
            email = cursor.getString(1);
            password = cursor.getString(2);
            birthdate = cursor.getString(3);
            pincode = cursor.getString(4);
            country = cursor.getString(5);
            paypal = cursor.getString(6);
            mobile = cursor.getString(7);
            fbid = cursor.getString(8);

        } while (cursor.moveToNext());
    }
db.close;
姓名、电子邮件、密码都是字符串,您可以分别设置。。
感谢您的帮助。

if(cursor.getCount!=0){while(cursor.moveToNext()){Log.i(“counttttt”,“cursor.getCount()”);UserName=cursor.getString(0);Email=cursor.getString(1);Password=cursor.getString(2);BirthDate=cursor.getString(3);PinCode=cursor.getString(4);Country=cursor.getString(5);PaypalID=cursor.getString(6);mobile=cursor.getString(7);FBID=cursor.getString(8);}}@Vinayak<代码>while(cursor.moveToNext())就足够了。无需计数,无需if/do/while like OP:FATAL EXCEPTION:main:Process:com.vinnig.loginandplay,PID:1022:java.lang.RuntimeException:无法启动活动组件信息{com.vinnig.loginandplay/com.vinnig.pages.AccountActivity}:java.lang.NullPointerException 06-11 07:36:25.914:E/AndroidRuntime(1022):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)06-11 07:36:25.914:E/AndroidRuntime(1022):在android.app.ActivityThread.access$800(ActivityThread.java:135)它不是重复的,它有不同的发行码,Vinayak。。但仍然是相同的错误,如上面的logcat。。