#697 closed defect (fixed)
DBOpen o bien función DBConnect::Create (stdlib)
Reported by: | Javier Portugal | Owned by: | Jorge |
---|---|---|---|
Priority: | highest | Milestone: | Mantainance |
Component: | Database | Version: | 1.1.7 |
Severity: | blocker | Keywords: | |
Cc: |
Description
La función Open() del nameblock que devuelve la función Create del nameblock DBConnect llama siempre a DBOpen con la estructura DBStruct:
Real ok = DBOpen(_.alias, _.user, _.password, _.driver, _.defaultDB, _.server?);
En los proyectos normalmente se crean variables en archivos .ini para guardar los distintos parámetros de una conexión a la base de datos, que son:
- alias (ODBC),
- usuario,
- password
- driver
- base de datos y
- servidor.
y los valores de estas variables son los que le llegan a la función anterior, es decir, en _.defaultDB irá, como es de esperar, el nombre de la base de datos.
Esto plantea el siguiente problema:
Como todavía no hay implementaciones nativas para ciertos gestores al pasar a DBOpen el conjunto con estructura DBStruct, solamente funciona si en el segundo argumento del conjunto en lugar de dar el nombre de la base de datos le damos el alias ODBC. Esto está haciendo que creemos un código muy extraño en función de si el proyecto tiene una base de datos con implementación nativa o no (pasando como variable de base de datos el alias odbc) y/o generando errores difíciles de detectar.
Propongo como solución una de las siguientes:
- Que si el driver no es nativo, DBOpen no use el segundo argumento del conjunto con estructura DBStruct, sino el primer argumento de DBOpen, que es siempre el alias ODBC.
- Si por alguna razón que no veo, lo anterior no es viable, que cambiemos la implementación del método Open del nameblock devuelto por DBConnect::Create.
Espero haberlo explicado con claridad, sino es así, por favor, escribidme por mail.
Change History (3)
comment:1 Changed 16 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:2 Changed 16 years ago by
Milestone: | → Manteinance |
---|
El problema está solucionado por el momento descartando internamente los parámetros opcionales para el caso de conexiones ODBC.
Yo no tengo ninguna conexión ODBC así que no puedo probarlo así que sería bueno que alguien lo probara y confirmara que está todo correcto.
(In [1055]) Fixes #697