Android-SQLite已创建且从未关闭
我有个问题。我用数据库中的一个表工作,我没有问题 好了,现在我添加了另一个表,问题开始了 在我的主要活动中,我打开数据库(可写模式)以填充存储在数组中的信息。。然后我关闭它,然后我重新打开它(可读模式),并用存储在数据库中的数据填充一个表。。。然后我关闭数据库。这在我做的所有活动中都起了作用 现在我有另一个活动,它对另一个表执行相同的操作,以可写方式打开它以填充它,然后关闭。。然后以可读的方式打开,填写表格并关闭 在我这样做之后,我有一个日志,上面写着SQLite已经创建并且从未关闭。。什么?我和往常一样做了同样的事。。以下是让我陷入困境的我的部分活动:Android-SQLite已创建且从未关闭,android,database,sqlite,Android,Database,Sqlite,我有个问题。我用数据库中的一个表工作,我没有问题 好了,现在我添加了另一个表,问题开始了 在我的主要活动中,我打开数据库(可写模式)以填充存储在数组中的信息。。然后我关闭它,然后我重新打开它(可读模式),并用存储在数据库中的数据填充一个表。。。然后我关闭数据库。这在我做的所有活动中都起了作用 现在我有另一个活动,它对另一个表执行相同的操作,以可写方式打开它以填充它,然后关闭。。然后以可读的方式打开,填写表格并关闭 在我这样做之后,我有一个日志,上面写着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();
}
}
usuariossqliteheloper usdbh=
新的UsuariosSQLiteHelper(此“DbIncidents”,null,1);
SQLiteDatabase db=usdbh.getWritableDatabase()//曼陀罗基地酒店
如果(db!=null)
{
db.execSQL(“从移动文件中删除”);
对于usuariossqliteheloper
类中的(int i=0;i),您是否真的实现了方法close()
?尝试为数据库实现重写的方法close(),并且在每次操作调用之后
close(),将关闭您的数据库
@Override
public synchronized void close() {
if (myDataBase != null)
myDataBase.close();
super.close();
}
希望你们明白我的意思…不太明白,但我认为db.close()是api的一种方法,只需关闭我的bd即可。我只在一个表中使用了它,并没有任何问题,这很少见