Java 在android中从SQLiteDatabase获取数据时获取NullPointerException
我正在使用扩展SQLiteOpenHelper的公共类DatabaseHandler 这是我从数据库获取所有数据的方法,看起来很好,但是崩溃了,活动显示为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
// 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。。