Autor |
Mensaje |
Lykan
Cesar David Callejas Martinez
Usuario
Registrado: Abril 2015
Mensajes: 10
Edad: 29 Ubicación: Sensuntepeque
|
Forma Correcta En La Conexion De Base De Datos Sqlite3
Hola. Quería preguntar si la forma en que me conecto a sqlite 3 es la correcta y si no lo es cual es la forma apropiada en que me debo conectar.
Código para la conexión:
|
#1 Lunes, 27 Abril 2015, 04:39 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Forma Correcta En La Conexion De Base De Datos Sqlite3
Sí, es correcta. Sólo te falta parametrizar los datos (con la clase settings, por ejemplo) para no tener que tocar al código si cambias de carpeta o de base de datos.
Saludos.
|
#2 Lunes, 27 Abril 2015, 12:08 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Forma Correcta En La Conexion De Base De Datos Sqlite3
Hola
En mi opinión, no hace falta instanciar dos veces la conexión con New, puesto que consumirás memoria innecesariamente.
Tampoco es necesario declarar las variables de clase como públicas, porque entiendo que sólo se van a usar (o se deberían de usar) dentro de la clase actual, ya que la función conectarBD ya es pública y es la que vas a usar.
Yo usaba estas funciones dentro de un módulo, lo cual tampoco sigue el concepto de POO.
Espero que te sirva,
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"
|
#3 Lunes, 27 Abril 2015, 19:31 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Forma Correcta En La Conexion De Base De Datos Sqlite3
Citar: Tampoco es necesario declarar las variables de clase como públicas, porque entiendo que sólo se van a usar (o se deberían de usar) dentro de la clase actual, ya que la función conectarBD ya es pública y es la que vas a usar.
Jesús lleva razón. No me había fijado, sólo leí lo relativo a la conexión.
|
#4 Lunes, 27 Abril 2015, 19:36 |
|
|
Lykan
Cesar David Callejas Martinez
Usuario
Registrado: Abril 2015
Mensajes: 10
Edad: 29 Ubicación: Sensuntepeque
|
Re: Forma Correcta En La Conexion De Base De Datos Sqlite3
Gracias por tomarse la molestia de contestarme. Cual es la diferencia de usar Public Function y por clase publica te refieres a
|
#5 Martes, 28 Abril 2015, 11:25 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Forma Correcta En La Conexion De Base De Datos Sqlite3
Citar: te refieres a
No se refiere a que en tu código original declaras publica la clase conexionBD y la clase ResultadoBD
Lo que te interesa es que ConexionBD sea accesible en todo momento, debe ser público. Por el contrario ResultadoBD sólo debería ser utilizada dentro de procedimientos Concretos, si es que vamos a respetar las normas de la programación estructurada o de la POO, por lo que es un desperdicio de memoria, y fuente de errores, declararla pública.
Por otra parte si declaras una instancia de una clase, por ejemplo:
Public ConexionBD as Connection
no estás ocupando memoria hasta que la dotes de contenido, pero si añades New
Public ConexionBD as New Connection
Esa instancia ya tendrá todas sus propiedades disponible, y por tanto ocupa sitio en la memoria. Si luego vuelves a asignarle un
ConexionBD = New Connection
Estás volviendo a recrear la instancia, lo cual es innecesario, pues ya estaba creada.
|
#6 Martes, 28 Abril 2015, 12:39 |
|
|
Lykan
Cesar David Callejas Martinez
Usuario
Registrado: Abril 2015
Mensajes: 10
Edad: 29 Ubicación: Sensuntepeque
|
Re: Forma Correcta En La Conexion De Base De Datos Sqlite3
Gracias por ayudarme y disculpen la molestia estoy comenzando en gambas y me siento algo perdido, me ha quedado claro esa parte de que resultadobd es un consumo innecesario y que solo debe de declararlo en la función que me sea necesaria, a demás de una instar dos veces a la base de datos, me ha quedado una duda path es el directorio de la base de datos
y que es lo que realiza
Disculpen mi ignorancia
|
#7 Martes, 28 Abril 2015, 15:24 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Forma Correcta En La Conexion De Base De Datos Sqlite3
En la función que te ha pasado Jesús, sólo se recibe un parámetro, que es el path y el nombre de la base de datos todo junto.
File.Dir(path) devuelve el directorio
File.Name(path) devuelve el nombre del archivo
Esto evita que intentes crear y abrir una conexión ya creada. Ahorra tiempo y errores.
Saludos
|
#8 Martes, 28 Abril 2015, 17:13 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Forma Correcta En La Conexion De Base De Datos Sqlite3
Inserté este asunto en la área del foro gambas-it.org dedicada a este foro. Un miembro del foro italiano tiene una sugerencia:
http://www.gambas-it.org/smf/index....g35675#msg35675
|
#9 Martes, 28 Abril 2015, 23:55 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Forma Correcta En La Conexion De Base De Datos Sqlite3
Hay muchas formas de ponerse el sombrero, que se dice por mi tierra.
Tu colega del foro italiano alega como "defecto" de la función de Jesús (si no lo he entendido mal) eso, que sea una función "y haya que repetirla en cada fichero". Bien tiene razón, habrá que hacer la llamada cuando sea necesario, pero no creo que eso sea un defecto en según y qué situaciones.
Me parece más correcto según los estándares de la POO su solución, que una función pública es más de otro paradigma, pero ambas son igual de válidas.
Por otra parte, lo que cuenta de intentar cerrar la conexión antes de abrirla y usar la excepción del error como signo de que está abierta, me parece bien, es como yo lo hago... pero al revés. Me explico: hasta hace muy poco (y aún no estoy del todo seguro de que se haya solucionado definitivamente) las conexiones MySQL de gambas planteaban problemas. El servidor suele tener unos time-outs, a veces muy estrictos, y te corta la conexión cuando quiere, perdiendo, al reabrirla toda la configuración de idioma y demás. Eso parece estar arreglado ya, repito, pero como profilaxis yo me acostumbré a hacer
try miconexion.close()
miconexión.open()
en la función que usaba para abrir la conexión. Así me aseguraba que se volviera a "refrescar" todo el tema de las locales. Para SQLite sí me parece buena práctica la de tu colega.
En esta questión (abrir conexiones) yo suelo ser más enrevesado... algún día os pondré cómo lo hago.
Saludos.
|
#10 Miercoles, 29 Abril 2015, 09:04 |
|
|
|