|
Página 1 de 1
|
Problema En Modo Depuración.Creacion De Una Base De Datos Con Código
Autor |
Mensaje |
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Problema En Modo Depuración.Creacion De Una Base De Datos Con Código
Hola Comunidad.
Con Sqlite3.
Estoy probando la creación de una base de datos desde código y observo
comportamientos diferentes.
En modo depuración no responde correctamente. Dando conexión ya abierta.
Hasta le añadí un retardo para ver el comportamiento.
Es muy diferente a cuando se ejecuta con normalidad con F5.
A modo de ejemplo la mayoría del código lo use en Form_Open.
La base no estaba creada.
¿ Es como si ya estuviese abierta en memoria ?.
Es extraño que se pretenda cerrar la conexión, asignar un nombre y luego abrirla.
Sera un procedimiento cuando la base de datos no tiene un nombre.
A menos que se cierre, esto no la hace nula y sigue manteniendo los datos de la conexión.
Cambiando solo el nombre de la base o archivo.
Naturalmente el código no es adecuado si ya la base esta creada.
Quizás esto no se puede ejecutar en modo depuración.
Saludos.
=================== Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Viernes, 27 Abril 2012, 13:11; editado 1 vez
|
#1 Viernes, 27 Abril 2012, 13:09 |
|
|
Haseo
Pedro
Usuario
Registrado: May 2011
Mensajes: 26
Edad: 33 Ubicación: Coquimbo, Chile
|
Re: Problema En Modo Depuración.Creacion De Una Base De Datos Con Código
Compañero yo uso estas lineas para crear una bd sqlite3
SUB agregoTabla()
DIM hcon AS NEW Connection
DIM latabla5 AS Table
DIM dbName AS String
DBName = "MiAgenda"
' Abre la conexion sólo al servidor de datos, sin abrir tablas
hcon.Type = "sqlite3"
hcon.Host = User.Home & "/base_de_datos"
hcon.Name = ""
hcon.Login = ""
hcon.Password = ""
hcon.Port = ""
TRY hcon.Open()
IF NOT Exist(hcon.Host & "/" & hcon.name) THEN
ENDIF
' Comprueba si existe la base de datos /user/home/importada_csv, y si no existe la crea
IF NOT hcon.Databases.Exist(DBName) THEN
hcon.Databases.Add(DBName)
' Esta espera es necesaria con bases SQLite , aunque no con Mysql
WAIT 0.5
END IF
' Se cierra la conexión al servidor
hcon.Close()
' Se abre la conexión a la base de datos
hcon.Host = User.Home & "/base_de_datos"
hcon.Name = DBName
TRY hcon.Open()
IF ERROR THEN
Message.Error("No se pudo abrir la base de datos")
' RETURN FALSE
END IF
latabla5 = hcon.Tables.Add("tabla1") 'creamos una tabla
latabla5.Fields.Add("id", db.Serial)
latabla5.Fields.Add("usuario", gb.String, 120, NOT NULL)
latabla5.Fields.Add("algo1", gb.String, 20, NOT NULL)
latabla5.Fields.Add("algo2", gb.String, 20, NOT NULL)
latabla5.PrimaryKey = ["id"]
latabla5.Update()
hcon.Close
CATCH
' Message.Error(Error.Text)
' RETURN FALSE
END
lo modificas a tu necesidad
Espero te sea de ayuda
última edición por Haseo el Viernes, 27 Abril 2012, 15:31; editado 1 vez
|
#2 Viernes, 27 Abril 2012, 15:30 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Problema En Modo Depuración.Creacion De Una Base De Datos Con Código
Shell, cuando dices "modo depuración" supongo que te refieres a depuración paso paso. Porque F5 ya es depuración en sí mismo.
Yo creo que el problema viene porque hay ciertas cosas que no se completan hasta que termina el método que las contiene, en este caso el Form_Load, por eso paso a paso puede ser que veas cosas raras. Es posible -aunque lo desconozco- que cree la bd en memoria y sólo la escriba a disco cuando finaliza el método.
Prueba a usar puntos de interrupción o sentencias Print o Debug entre las líneas de tu interés. Mientras el programa está pausado, se pueden ver los valores que adquieren los objetos con doble clic sobre el objeto o variable en el editor de código.
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 Viernes, 27 Abril 2012, 20:24 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Problema En Modo Depuración.Creacion De Una Base De Datos Con Código
Haseo:
Gracias.
Jesús:
jguardon escribió: Shell, cuando dices "modo depuración" supongo que te refieres a depuración paso paso. Porque F5 ya es depuración en sí mismo.
Si, efectivamente.Paso a paso ,F8. F5 ya seria una ejecución.(Aunque en el fondo estés viendo un resultado, final).
jguardon escribió:
Prueba a usar puntos de interrupción o sentencias Print o Debug entre las líneas de tu interés. Mientras el programa está pausado, se pueden ver los valores que adquieren los objetos con doble clic sobre el objeto o variable en el editor de código.
Ok, probare eso.
Saludos.
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#4 Sabado, 28 Abril 2012, 00:33 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Problema En Modo Depuración.Creacion De Una Base De Datos Con Código
Shell
"F5" o pulsar el símbolo "Play" en el IDE, aunque diga ejecutar, en realidad se ejecuta en modo depuración. Todo lo que se ejecuta dentro del IDE se ejecuta en modo depuración.
Puedes estar seguro de ello, porque cuando tu programa tiene un error, se detiene en la línea que lo produjo, indicando el tipo de error y el stack abajo a la derecha. Igualmente cuando el programa se detuvo tras el error, puedes comprobar los valores de los objetos como expliqué antes.
La ejecución del programa sólo tiene lugar fuera del IDE, a partir del fichero .gambas generado. Ahí, cuando hay un error no controlado, el programa casca sin remedio.
Creo que convenía aclarar este punto.
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"
|
#5 Sabado, 28 Abril 2012, 11:58 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Problema En Modo Depuración.Creacion De Una Base De Datos Con Código
Jesús:
Tienes toda la razón,el IDE siempre esta de fondo.
Creando los puntos de interrupción no se ha generado un error.
Saludos.
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#6 Sabado, 28 Abril 2012, 23:43 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
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
|
|
|
|
|