error al grabar muchos archivos en sqlite?

Hola cree un programa en Qt el cual lee unos datos y los inserta constantemente a una base de datos sqlite3 este funciona bien, sin embargo al cabo de un tiempo este deja de funcionar y saca el siguiente error:

unable to open database file Unable to fetch row

por consola saca el siguiente mensaje:

:11373): Gtk-WARNING **: Error loading theme icon 'gtk-ok' for stock: No se ha podido cargar el módulo de carga de imágenes: /usr/lib/gtk-2.0/2.10.0/loaders/svg_loader.so: /usr/lib/gtk-2.0/2.10.0/loaders/svg_loader.so: no se puede abrír el archivo de objeto compartido: Demasiados archivos abiertos

no se cual pueda ser error, espero me puedan colaborar, muchas gracias

tambien con

tambien con query.finish().

mm..y si efectivamente debes asegurarte de crear los query dinamicamente como dice er bardo. asi al terminar la funcion donde se emplean, son destruidos.

Creo que es un goteo de memoria por muchas instancias QSqlQuery

Todas las instancias QSqlQuery emplean la misma conexión al archivo, y cuando una de ellas abre y se llama, no se debe de cerrar correctamente... a mí me ocurrió algo parecido con una base de datos MySQL, y comprobé que efectivamente aparecían multitud de conexiones abiertas.

La mejor forma de evitarlo es asegurando que los objetos QSqlQuery son eliminados cuando terminan de ser usados, así que mejor usa memoria dinámica para crearlos y elimínalos una vez dejen de ser útiles; prueba con el siguiente método, a ver qué tal funciona.

QSqlQuery *query = new QSqlQuery("Aquí viene tu sentencia sql"); //Abrirá la conexión por defecto
 
/// Haces lo que tengas que hacer con la query
 
delete query;

¡Un saludo!

Anuncios Google