#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();
}
Надеюсь, вы поняли мою точку зрения…