Android-SQLite создан и никогда не закрыт - PullRequest
0 голосов
/ 07 октября 2011

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

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

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

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

И после того, как я это сделаю, у меня есть 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();
    }





}

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

Ответы [ 2 ]

0 голосов
/ 07 октября 2011

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

@Override
public synchronized void close() {

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

    super.close();

}

Надеюсь, вы меня поняли ...

0 голосов
/ 07 октября 2011

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

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