Android- SQLite создан и никогда не закрывался

#android #database #sqlite

#Android #База данных #sqlite

Вопрос:

У меня проблема. Я работал с одной таблицей в своей базе данных, и у меня не было проблем…

Ну, теперь я добавляю еще одну таблицу, и начались проблемы..

В моей основной деятельности я открываю базу данных (режим, доступный для записи), чтобы заполнить информацию, хранящуюся в массиве .. затем я закрываю ее, после этого я снова открываю ее (режим чтения) и заполняю таблицу данными, хранящимися в моей базе данных … затем я закрываю DB. это работало во всех действиях, которые я выполнял.делал это..

Ну, теперь у меня есть другое действие, которое просто делает то же самое с другой таблицей, открывает ее как доступную для записи, чтобы заполнить ее, закрыть .. а затем открывает ее как читаемую и заполняет таблицу и закрывает..

И после того, как я это сделаю, у меня есть LogCat, в котором говорится, что SQLite создан и никогда не закрывался.. что? Я сделал то же самое, что и всегда.. вот часть моей деятельности, которая доставляет мне неприятности:

      UsuariosSQLiteHelper usdbh =
                new UsuariosSQLiteHelper(this, "DBIncidentes", null, 1);

            SQLiteDatabase db = usdbh.getWritableDatabase();         //Abro base de datos para escritura

            if(db != null)
            {

                 db.execSQL("DELETE from Moviles");
                 for (int i=0; i<= (vecTotal.length) -1; i  ) {



                String reg = vecTotal[i].toString(); 
                String [] inc = TextUtils.split(reg, "\^");




                String numMovil = inc[0];
                String colMovil = inc[1];
                String estado = inc[2];
                String localidad = inc[3];
                String strCantServ = inc[4];

                Integer cantServ = Integer.parseInt(strCantServ);



                try{                

                    //Insertamos los datos en la tabla Incidentes
 db.execSQL("INSERT INTO Moviles ( idInterno, numMovil, colMovil, estado, localidad, cantServ) "  
             "VALUES (" (i 1) ", '"   numMovil  "', '"   colMovil  "' , '"   estado  "', '"   localidad  "', "  cantServ  " )");



}

catch (Exception e)

{
    e.getMessage();


}






                 }



                 db.close();


            }




            UsuariosSQLiteHelper bdLlena =
                    new UsuariosSQLiteHelper(this, "DBIncidentes", null, 1);

                SQLiteDatabase db2 = bdLlena.getReadableDatabase();



            if(db2 != null)


            {






           String query = "Select * FROM Moviles";



           Cursor d = db2.rawQuery(query,null);

            if (d.moveToFirst())

                do {


                Integer j = 1;

                    Integer idInterno = d.getInt(0);
                    String numMovil = d.getString(1);
                    String colMovil = d.getString(2);
                    String estado = d.getString(3);
                    String localidad = d.getString(4);
                    Integer cantServ = d.getInt(5);



                     TableRow tr = new TableRow(this);

                        tr.setId(idInterno);
                        tr.setOnClickListener(this);
                        tr.setLayoutParams(new LayoutParams(
                                   LayoutParams.WRAP_CONTENT,
                                   LayoutParams.WRAP_CONTENT));   


                          //------------------------------------------------- 

                        //seteo el campo Numero de Movil

                           TextView cmpNumMovil = new TextView(this);
                           cmpNumMovil.setId(200 j);

                           int colorInt = Color.parseColor(colMovil);
                           cmpNumMovil.setGravity(Gravity.CENTER);
                           cmpNumMovil.setText(numMovil);

                           cmpNumMovil.setBackgroundColor(colorInt);
                           cmpNumMovil.setTextColor(Color.BLACK);
                           cmpNumMovil.setWidth(10);
                           View v = new View(this);
                           v.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, 1));
                           v.setBackgroundColor(Color.rgb(0, 0, 0));
                           tl.addView(v);
                           tr.addView(cmpNumMovil);

                         //----------------------------------------------------------------  
                         //seteo el campo entidad

                           TextView cmpEstado = new TextView(this);
                           cmpEstado.setId(300 j);
                           cmpEstado.setText(estado);
                           cmpEstado.setGravity(Gravity.CENTER);

                           cmpEstado.setTextColor(Color.BLACK); 
                           tr.addView(cmpEstado);

                           //----------------------------------------------------------------  


                           TextView cmpLoc = new TextView(this);
                           cmpLoc.setId(300 j);
                           cmpLoc.setText(localidad);
                           cmpLoc.setGravity(Gravity.CENTER);

                           cmpLoc.setTextColor(Color.BLACK); 
                           tr.addView(cmpLoc);



                        //----------------------------------------------------------------  


                           TextView cmpCantServ = new TextView(this);
                           cmpCantServ.setId(300 j);
                           cmpCantServ.setText(cantServ);
                           cmpCantServ.setGravity(Gravity.CENTER);

                           cmpCantServ.setTextColor(Color.BLACK); 
                           tr.addView(cmpCantServ);





            j  ;


                 } while(d.moveToNext());



            }



            db2.close();





    }


    catch (Exception e)

    {


        e.getMessage();
    }





}
  

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

Ответ №1:

В UsuariosSQLiteHelper классе вы действительно реализовали метод close() ?

Комментарии:

1. не совсем, но я думал, что db.close(); это метод API, просто закройте мой bd .. и я использовал его только с 1 таблицей, и у меня не было проблем, это редко

Ответ №2:

попробуйте реализовать переопределенный метод close() для базы данных, и после каждого вызова операции close() будет закрывать базу данных ur…

 @Override
public synchronized void close() {

    if (myDataBase != null)
        myDataBase.close();

    super.close();

}
  

Надеюсь, вы поняли мою точку зрения…