0

DB へのクラス アクセスを許可するメソッドでエラーが発生しました。エラーは .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();
                            }

                            }
4

3 に答える 3

3

これは、このメソッドを呼び出すにはオブジェクトのインスタンスが必要であることを意味します。static

次のようにします。Cursor c = new YourObject().getReadableDatabase()...

または、呼び出されたメソッドも作成しますstatic

于 2012-08-23T15:28:32.043 に答える
3

非静的メソッドを呼び出しているため、エラーがスローされています。

getReadableDatabase();

静的メソッドで呼び出すすべてのメソッドも静的である必要があります。

これを修正するには、静的メソッドから静的を削除するか、使用されているすべてのメソッドに静的を追加します。

于 2012-08-23T15:29:08.173 に答える
0

の方法ですSQLiteOpenHelper

そのため、代わりに次のようにします。

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

また

SQLiteOpenHelper soh = new SQLiteOpenHelper();
Cursor c = soh().getReadableDatabase()..
于 2012-08-23T15:31:09.343 に答える