我有一个更新表中的三个值的问题。虽然我在java类中调用该函数将不会有activity.if我在类中使用该代码在活动是存在的作品。ANDROID SQL NULLPOINTER getwritabledatabse
这是databasehelper类代码
public DatabaseHelper(Context ctx) {
super(ctx, DATABASE_NAME, null, 1);
}
public DatabaseHelper() {
super(null, DATABASE_NAME, null, 1);
}
public boolean updateData(String subject, double present, double total) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_1, subject);
contentValues.put(COL_2, present);
contentValues.put(COL_3, total);
db.update(TABLE_NAME, contentValues, "SUBJECT = ?", new String[]{subject});
return true;
}
这是其中i调用机能的研究
private DatabaseHelper myDb = new DatabaseHelper();
public subject_class(){};
public subject_class(String subject, double num1, double num2) {
this.subject = subject;
this.num1 = num1;
this.num2 = num2;
}
public void update(String sub,double num1,double num2) {
myDb.update1(sub,num1,num2);
}
错误是如下
显示java.lang.NullPointerException类:尝试调用虚拟方法'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.Strin g,int,android.database.sqlite.SQLiteDatabase $ CursorFactory,android.database.DatabaseErrorHandler)'在android.database上的android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223) 上的空对象引用 上。 sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163) at com.example.sravan.test.DatabaseHelper.update1(DatabaseHelper.java:129) at com.example.sravan.test.subject_class.update(subject_class.java: 27) at com.example.sravan.test.subjectlistadapter $ 1.onClick(subjectlistadapter.java:70) at android.view.View.performClick(View.java:5721) at android.widget.TextView.performClick(TextView的.java: (Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:10931) at android.view.View $ PerformClick.run(View.java:22620) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java: (Native Method) (Android)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1230) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
在此先感谢
使静态全局变量静态上下文appContext;并在appContext中分配应用程序上下文。 appContext = getApplicationContext();在主要活动的onCreate()方法中。现在可以在您的非活动课程中进行访问。新的SetSql(MainActivity.appContext); - Ravi1187342 12年4月13日在9:28这帮了我 –