Я не могу использовать данные во внешнем классе из внутреннего класса, который я создал - PullRequest
0 голосов
/ 06 октября 2018

Как видите, я хочу создать внешний класс, который будет адаптером между моей деятельностью и моей базой данных, чтобы сделать его более безопасным, просто отказываясь использовать значения из внутреннего класса, я попытался импортироватьзначения, но не имеет смысла их импортировать, и я пытаюсь их скрыть. Можете ли вы решить эту проблему или дать мне другой способ заставить мой код работать

public class DataBaseConnection {
    DataBase DataBase;
    public DataBaseConnection(Context context)    {
         DataBase = new DataBase(context);
          public void  dataInsert (String classnumber , String studentsnumber) {
         SQLiteDatabase sqLiteDatabase = dataBase.getWritableDatabase();
            ContentValues contentValues = new ContentValues();
            contentValues.put(DataBase.classname);
            contentValues.put(DataBase.studentsnumber);
        }
    }

    class DataBase  extends SQLiteOpenHelper {
        private static final String database_name = "DB";
        private static final int database_vesion =1;
        private static final String UID = "id";
        private static final String name = "Name";
        private static final String work_mark = "Works Mark";
        private static final String test_mark = "Tests mark";
        private static final String tableName = "Students";
        private static final String classname = "Class name";
        private static final String studentsnumber = "Students number";
        private Context context;
        private static final String tablename1 = "Class";
        private static final String CREATE_TABLE1 = "CREATE TABLE " +tablename1+" " +
                " ("+UID+" INTEGER PRIMARY KEY AUTOINCREMENT," +
                " "+classname+" TEXT VARCHAR(255))," +
                " "+studentsnumber+" INTEGER ;";

        private static final String CREATE_TABLE = "CREATE TABLE " +tableName+" " +
                " ("+UID+" INTEGER PRIMARY KEY AUTOINCREMENT," +
                " "+name+" TEXT VARCHAR(255))," +
                " "+work_mark+" INTEGER ," +
                " "+test_mark+" INTEGER ;";
            private static final String DROP_TABLE = "DROP TABLE IF EXISTS " +tableName;
            private static final String DROP_TABLE1 = "DROP TABLE IF EXISTS "  +tablename1;

        public DataBase(Context context) {
            super(context, database_name,null, database_vesion);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(CREATE_TABLE);

            db.execSQL(CREATE_TABLE1);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

            db.execSQL(DROP_TABLE);

            db.execSQL(DROP_TABLE1);

            onCreate(SQLiteDatabase,db);
        }
    }
}

1 Ответ

0 голосов
/ 06 октября 2018

У вас есть пара проблем, вы поместили функцию внутри функции, которая не имеет допустимого синтаксиса - она ​​не имеет ничего общего с видимостью переменных класса.Также не совсем уверен, насколько этот подход более безопасен, поскольку ваша переменная базы данных находится в области действия пакета.Для решения ваших непосредственных проблем вам нужно что-то вроде этого:

public class DataBaseConnection {

    private final DataBase dataBase;

    public DataBaseConnection(Context context)    {
        dataBase = new DataBase(context);
    }

    public void dataInsert (String classnumber , String studentsnumber) {
        SQLiteDatabase sqLiteDatabase = dataBase.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(DataBase.classname, classnumber);
        contentValues.put(DataBase.studentsnumber, studentsnumber);
        sqLiteDatabase.insert( // insert here  )
    }

.. Rest of class

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