|
Página 8 de 8
|
Autor |
Mensaje |
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Proyecto Fin De Grado
En la sentencia SQL veo "ORDER By 1"
¿Es '1' el nombre de un campo? Porque si no lo es, es muy probable que tengas un error silencioso por ahí...
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#71 Domingo, 26 Noviembre 2017, 10:18 |
|
|
rescobar
Usuario
Registrado: Junio 2017
Mensajes: 42
Edad: 50 Ubicación: Espejo ,Cordoba
|
Re: Proyecto Fin De Grado
Buenas.
Gracias a todos he encontrado el problema , se me habia colado un
FMain.Conexion_Base_Datos.Close
Esto cierra la conexión a la base de datos.
Una pregunta ¿Si cargo un Result, si cierro la conexión a la base de datos se pierde los datos del Result.?
Es que tengo la costumbre de cada vez que realizo una acción en la base de datos hago:
1.- Abro conexión a la Base de datos
2.- Realizo la acción (Insert, select , etc...)
3.- Cierro la conexión.
No se si es buena o mala practica, pero así me evito el problema de saber en cada momento como tengo la conexión de la base de datos.
Cuando estaba currando veía mucho que muchos programas, paginas webs, tenían este problema, de tener muchísimas conexiones abiertas y después no ir bien. Claro esta como nosotros le montábamos el servidor (hardware, y el SO, pero no administrábamos el contenido) era problema nuestro.
Saludos.
|
#72 Domingo, 26 Noviembre 2017, 18:50 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Proyecto Fin De Grado
Buenas.
Gracias a todos he encontrado el problema , se me habia colado un
FMain.Conexion_Base_Datos.Close
Esto cierra la conexión a la base de datos.
Una pregunta ¿Si cargo un Result, si cierro la conexión a la base de datos se pierde los datos del Result.?
Es que tengo la costumbre de cada vez que realizo una acción en la base de datos hago:
1.- Abro conexión a la Base de datos
2.- Realizo la acción (Insert, select , etc...)
3.- Cierro la conexión.
No se si es buena o mala practica, pero así me evito el problema de saber en cada momento como tengo la conexión de la base de datos.
Cuando estaba currando veía mucho que muchos programas, paginas webs, tenían este problema, de tener muchísimas conexiones abiertas y después no ir bien. Claro esta como nosotros le montábamos el servidor (hardware, y el SO, pero no administrábamos el contenido) era problema nuestro.
Saludos.
Abierta. La conexión siempre abierta al principio del programa. No la cierres hasta el final. Eso no genera miles de conexiones, genera una sola conexión.
Cierto que hay servidores, como MySQL que si el usuario demora mucho entre consulta y consulta te la pueden cerrar por time-out o cosas así, pero con establecer mecanismos por si acaso, el problema se soslaya.
Si quieres comprobar la eficiencia de abrir-consultar-cerrar, activa el perfilador de tiempos y comprobarás que, con MySQL, abrir la base de datos puede llevar casi cinco veces el tiempo de una consulta pequeña (dependiendo de la distancia al servidor, su capacidad y la consulta que quieras hacer, claro).
Pero en principio, la conexión siempre abierta.
Utiliza la propiedad opened de la clase Connection para evitar problemas.
Eso no consume casi tiempo, si la conexión está abierta, y te evita el error.
Citar: Una pregunta ¿Si cargo un Result, si cierro la conexión a la base de datos se pierde los datos del Result.?
No. No tiene nada que ver, un Result es un objeto en memoria (como un array, vamos,) y una vez que está ahí, ahí está.
Otra cosa es cuando intentas utilizar los métodos del mismo para acceder a la base de datos (update, por ejemplo), que sí te petarán si está cerrada. Pero recorrer el result y demás no "tira" de la conexión.
Saludos
=================== No podemos regresar
última edición por shordi el Domingo, 26 Noviembre 2017, 20:41; editado 1 vez
|
#73 Domingo, 26 Noviembre 2017, 20:38 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Proyecto Fin De Grado
rescobar:
Consejo: El depurador que tiene el IDE de gambas, te puede ayudar mucho. Poner puntos de interrupción e ir paso a paso linea a linea ejecutando el programa, e ir viendo los cambio de valor de las variables, a mi me ha ayudado a resolver muchos problemas.
|
#74 Domingo, 26 Noviembre 2017, 20:40 |
|
|
rescobar
Usuario
Registrado: Junio 2017
Mensajes: 42
Edad: 50 Ubicación: Espejo ,Cordoba
|
Re: Proyecto Fin De Grado
Buenas.
Shordi
Citar:
No. No tiene nada que ver, un Result es un objeto en memoria (como un array, vamos,) y una vez que está ahí, ahí está.
Otra cosa es cuando intentas utilizar los métodos del mismo para acceder a la base de datos (update, por ejemplo), que sí te petarán si está cerrada. Pero recorrer el result y demás no "tira" de la conexión.
Pues parece ser que si tiene que ver ya que al cerrar la conexión de la base de datos era cuando dejaba de funcionar el Result.
Como no sea un Bug de la versión 3.10.0. O algo raro que aun no se que es.
Pero quitando el .close me ha dejado de dar el error.
Saludos.
|
#75 Martes, 28 Noviembre 2017, 11:28 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Proyecto Fin De Grado
Citar: Pues parece ser que si tiene que ver ya que al cerrar la conexión de la base de datos era cuando dejaba de funcionar el Result.
No te lo discuto. Yo nunca cierro las conexiones.
=================== No podemos regresar
|
#76 Martes, 28 Noviembre 2017, 17:52 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Proyecto Fin De Grado
Por experiencia propia, es cierto que si cierras la conexión, el objeto 'result' pierde su contenido, sólo lo mantiene con la conexión abierta y nunca he sabido el motivo.
De igual modo que shordi, yo mantengo la conexión abierta durante toda la ejecución del programa y nunca he tenido problemas, aunque también me preparé una mini-función que comprobaba que estaba abierta y si no, se volvía a abrir siempre que tenía que ejecutar una operación sobre la BD. De ese modo, cero problemas.
Para evitar memory leaks (pérdidas de memoria, crecimiento de la ram en uso) lo suyo es siempre cerrar la conexión, amén de otras limpiezas, justo antes del cierre de la aplicación por ejemplo en el evento Form_Close del formulario principal o en otro lugar apropiado.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#77 Martes, 28 Noviembre 2017, 23:29 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Proyecto Fin De Grado
Citar: Para evitar memory leaks (pérdidas de memoria, crecimiento de la ram en uso) lo suyo es siempre cerrar la conexión, amén de otras limpiezas, justo antes del cierre de la aplicación por ejemplo en el evento Form_Close del formulario principal o en otro lugar apropiado.
Amén.
=================== No podemos regresar
|
#78 Miercoles, 29 Noviembre 2017, 09:30 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 8 de 8
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|