нестатический c метод getReadableDatabase () не может ссылаться на статический c контекст SQLiteDatabase db = getReadableDatabase (); - PullRequest
0 голосов
/ 08 мая 2020

Я не могу решить указанные ниже проблемы. На нестатический c метод getReadableDatabase () нельзя ссылаться из статического c контекста. В ContentValues.put put показывает ошибку. Если getReadableDatabase () сделана для stati c, тогда в основном действии Boolean res = DatabaseHelper.checkUser (user, pwd); checkuser находится в нестатическом c. Пожалуйста, помогите.

*** строгий текст *** package com.example.doorbell; import android .app.Activity; импорт android .app.AlertDialog; import android .content.DialogInterface; import android .content.ContentValues; импорт android .content.Context; импорт android .view.View; import android .database.Cursor; import android .widget.EditText; импорт android .database.sqlite.SQLiteDatabase; import android .database.sqlite.SQLiteException; import android .database.sqlite.SQLiteOpenHelper; import android .util.Log; import android .service.autofill.AutofillService; import androidx.annotation.Nullable; import java .util.jar.Attributes; import stati c android .content.ContentValues. *; publi c class DatabaseHelper расширяет SQLiteOpenHelper {publi c stati c final String DATABASE_NAME = "register.db"; publi c stati c final String TABLE_NAME = "registeruser"; publi c stati c final String COL_1 = "ID"; publi c stati c final String COL_2 = "имя пользователя"; publi c stati c final String COL_3 = "пароль"; publi c DatabaseHelper (контекст контекста) {super (context, DATABASE_NAME, null, 1); } @Override publi c void onCreate (SQLiteDatabase db) {db.exe cSQL («CREATE TABLE registeruser (ID INTEGER PRIMARY KEY AUTOINCREMENT, имя пользователя ТЕКСТ, пароль ТЕКСТ)»); } @Override publi c void onUpgrade (база данных SQLiteDatabase, int oldVersion, int newVersion) {db.exe cSQL ("DROP TABLE IF EXISTS" + TABLE_NAME); onCreate (дб); } publi c long adduser (пользователь String, пароль String) {SQLiteDatabase db = this.getWritableDatabase (); ContentValues ​​contentValues ​​= new ContentValues ​​(); ContentValues.put («Имя пользователя», пользователь); ContentValues.put («Пароль», пароль); long res = db.insert ("registeruser", null, contentValues); db.close (); return res; } publi c stati c логическое значение checkUser (имя пользователя в строке, пароль в строке) {String [] columns = {COL_1}; База данных SQLiteDatabase = новый класс DatabaseHelper_class (это); SQLiteDatabase db = новый DatabaseHelper.getReadableDatabase (); Выбор строки = COL_2 + "=?" + "и" + COL_3 + "=?"; String [] selectionArgs = {имя пользователя, пароль}; Cursor cursor = DatabaseHelper.query (ИМЯ ТАБЛИЦЫ, столбцы, выбор, selectionArgs, null, null, null); int count = cursor.getCount (); cursor.close (); DatabaseHelper.close (); если (счетчик> 0) вернуть истину; иначе вернуть ложь; }}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...