2012-08-23 3 views
-1

내 DB에 대한 클래스 액세스를 허용하는 오류가 발생했습니다. .getReadableDatabase()에서 오류가 발생합니다. 받은 오류는 다음과 같습니다. 이 오류를 수정하는 방법을 모릅니다.비 정적 메서드에 대한 정적 참조를 만들 수 없습니다.

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

방법 :

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

아니므로이 메소드를 호출하는 개체의 인스턴스를 필요로 의미 :이 메서드를 호출하는 데 사용

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; 

다음과 같이하십시오. Cursor c = new YourObject().getReadableDatabase()...

또는도 static

3

가 아닌 정적 메서드를 호출하기 때문에 오류가 발생되고 호출 방법은합니다

getReadableDatabase(); 

정적 메서드 호출 모든 방법은 정적이어야합니다.

고정하려면 정적 방법에서 정적을 제거하거나 사용 된 모든 방법에 정적을 추가하십시오.

0

SQLiteOpenHelper의 방법입니다.

그래서 그 대신 이렇게 :

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

또는

SQLiteOpenHelper soh = new SQLiteOpenHelper(); 
Cursor c = soh().getReadableDatabase().. 
관련 문제