Область видимости переменных в Java Android

Рейтинг: -2Ответов: 1Опубликовано: 03.11.2014

Всем привет.

Создаю подключение к базе:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        DB_Interface connect_to_DB = new DB_Interface(MainActivity.this);
        SQLiteDatabase db = connect_to_DB.getWritableDatabase();

        }

Описываю интерфейс нажатия кнопки ниже:

OnClickListener click = new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            ContentValues cv = new ContentValues();
            String first_name = "Дудников";
            cv.put("name", first_name);
            long rowID = db.insert("list_student", null, cv);
            connect_to_DB.close();
        }
    };

Не видит db и connect_to_DB в первом коде. Я хотел, чтобы при создании приложения интерфейс базы создался, а далее я уже работал с базой - редактировал, удалял и т. д. Но получается, что надо каждый раз подключаться к базе, т.е. я нажал кнопку, подключился к базе. И делать так каждый раз?! Разве это правильно так дергать базу? Открывать-закрывать?

Ответы

▲ 3Принят

Вы создаете переменную db внутри тела функции onCreate, за пределами которого она ни в коем случае не будет видна. Вынесите обьявление переменной SQLiteDatabase db; в класс (Activity?), как его поле, и инициализируйте ее и onCreate.