2012-08-23 111 views
-1

我收到一個關於我的方法的錯誤,允許類訪問我的數據庫。錯誤發生在.getReadableDatabase()。收到的錯誤如下。不知道如何解決這個錯誤。無法對靜態方法進行靜態引用

Cannot make a static reference to the non-static method getReadableDatabase() from the type SQLiteOpenHelper 

方法:

public static boolean vaidateUser(String username, String password) { 
     Cursor c = getReadableDatabase().rawQuery(
       "SELECT * FROM " + TABLE_NAME_CREDENTIALS + " WHERE " 
         + COLUMN_NAME_USERNAME + "='" + username +"'AND "+COLUMN_NAME_PASSWORD+"='"+password+"'" , null); 
     if (c.getCount()>0) 
      return true; 
      return false; 

用來調用這個方法:

lsLogin.setOnClickListener (new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        //check login 
        String username = lsUsername.getText().toString(); 
        String password = lsPassword.getText().toString(); 
        try{ 
         if(LoginDB.vaidateUser(username,password)) { 
          Intent goToNextActivity = new Intent(getApplicationContext(), menu.class); 
          startActivity(goToNextActivity); 

           Toast.makeText(LoginScrExample.this,"Login Sucessful",Toast.LENGTH_LONG).show(); 
          }else{ 
           Toast.makeText(LoginScrExample.this,"Invalid Username/Password",Toast.LENGTH_LONG).show(); 
          } 

          } 

回答

3

這意味着你需要一個對象的實例調用此方法,因爲它是不static

做類似:Cursor c = new YourObject().getReadableDatabase()...

,或使所謂的方法也static

3

被拋出的錯誤,因爲你調用一個非靜態方法:

getReadableDatabase(); 

你在一個靜態方法調用任何方法也必須是靜態的。

要解決該問題,請從靜態方法中刪除靜態,或將靜態添加到所有使用的方法。

0

這是一種SQLiteOpenHelper的方法。

所以做這個:

Cursor c = new SQLiteOpenHelper().getReadableDatabase().. 

SQLiteOpenHelper soh = new SQLiteOpenHelper(); 
Cursor c = soh().getReadableDatabase().. 
相關問題