我有问题。我在我的数据库中使用了一个表,我没有问题......
现在我添加了另一张表并开始出现问题..
在我的主要活动中,我打开数据库(可写模式)来填充存储在数组中的信息..然后我关闭它,之后我重新打开它(可读模式)并填充一个表,其中存储在我的数据库中的数据...然后我关闭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();
}
}
我对两个表使用相同的帮助器,我的新表充满了数据..但它没有显示在我的屏幕上,我有错误的创建,从未关闭..
答案 0 :(得分:0)
在UsuariosSQLiteHelper
课程中,你真的实现了方法close()
吗?
答案 1 :(得分:0)
尝试为数据库实现重写方法close(),并在每次操作后调用 close(),将你的数据库包裹起来......
@Override
public synchronized void close() {
if (myDataBase != null)
myDataBase.close();
super.close();
}
希望你明白我的意思......