Android-SQLite已创建且从未关闭

时间:2011-10-07 02:14:21

标签: android database 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();
    }





}

我对两个表使用相同的帮助器,我的新表充满了数据..但它没有显示在我的屏幕上,我有错误的创建,从未关闭..

2 个答案:

答案 0 :(得分:0)

UsuariosSQLiteHelper课程中,你真的实现了方法close()吗?

答案 1 :(得分:0)

尝试为数据库实现重写方法close(),并在每次操作后调用 close(),将你的数据库包裹起来......

@Override
public synchronized void close() {

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

    super.close();

}

希望你明白我的意思......