2017-04-13 56 views
0

我有一個更新表中的三個值的問題。雖然我在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)

在此先感謝

+0

使靜態全局變量靜態上下文appContext;並在appContext中分配應用程序上下文。 appContext = getApplicationContext();在主要活動的onCreate()方法中。現在可以在您的非活動課程中進行訪問。新的SetSql(MainActivity.appContext); - Ravi1187342 12年4月13日在9:28這幫了我 –

回答

0

使靜態全局變量

 static Context appContext; 

,並指定在appContext應用程序上下文。

 appContext=getApplicationContext(); 

在主要活動的onCreate()方法中。現在可以在您的非活動課程中進行訪問。

 new SetSql(MainActivity.appContext);