Jump to content


Photo

3 preguntas sobre delphi y firebird


  • Please log in to reply
6 replies to this topic

#1 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 posts
  • LocationEspaña

Posted 09 October 2011 - 06:59 AM

Hola compañeros tengo tres preguntas, sobre como desde delphi poder actuar sobre firebird  1ª) Como hago para conectar el servidor de firebird si esta desconectado desde mi ejecutable?  2ª) Como descubro cual es la ruta de firebird desde mi ejecutable?  3ª) Como creo desde Delphi, sea llamando al gen (creo que es así), o de que otro método creo un user name y un password para que lo admita firebird?.    Un saludo y gracias por vuestra ayuda como siempre.
  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 09 October 2011 - 07:12 AM

Hola
1- Si esta ne local podria tenerse un acceso directo a la pantalla de concexion de firebird.
Si esta en red, me imagino que tal vez con un opendialog.
2- Saber donde esta no lo creo, buscarlo con un opendialog.
3- El usuario siempre es el mismo, tal vez lo que quieres se podria hacer desde el componente que uses para la conexion.
Saludos
  • 0

#3 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6301 posts
  • LocationArgentina

Posted 09 October 2011 - 11:06 AM

Hola Desart,
Trataré de responderte tus preguntas.


1) En teoría el mismo Firebird se auto levanta. Seguramente sabrás que Firebird cuenta con firebird Guardian, que es un servicio que levanta el Server en caso de una falla. Ahora bien, no sabría indicarte cómo levantar un servicio a través de Delphi, por código.
O quizá estoy entendiendo mal tu pregunta y a lo que apuntas en realidad es a detener y levantar el Server. Esto es posible mediante la utilidad Instsvc (al menos para Super Server, bajo Windows; para Linux la utilidad es fbmgr) enviando el comando start o stop según sea el caso.


Se podría hacer uso del ShellExecute, ejecutar la ventana de comandos y pasar el ejecutable con los comandos, etc.


Otra posibilidad es utilizar comandos net; aunque para ello debes conocer el nombre exacto del servicio.
Recomiendo la lectura de la documentación que hacía a la ex "Comand Lines Utilities", para este caso Firebird SuperServer Manager.


2) Para saber donde está instalado basta con acceder al registro. En la documentación está descrito la KEY. Depende de la versión de FB. Por ejemplo, para Firebird 1.5 es:
HKLM\SOFTWARE\Firebird Proyect\Firebird Proyect\Firebird Server\Instances\DefaultInstance


Pero con las mejoras y la preparación para múltiples instancias desde FB 2.x esta ruta ha variado ligeramente. En el respectivo Release Notes que acompaña a cada instalación está perfectamente documentado.


Otra posibilidad es leer el parámetro RootDirectory del archivo firebird.conf o la variable de entorno FIREBIRD si es que existe.


Ahora bien, yo estoy asumiendo que se trata de una instalación en Windows. Si el server está en Linux allí si no sabría como orientarte como hacerlo desde Delphi. De todas formas para Linux son similares: leer la variable de entorno FIREBIRD, el parámetro RootDirectory del archivo firebird.conf o la instalación por defecto: /opt/firebird.


3) Puedes invocar a la utilidad gsec y pasarle los comandos y parámetros adecuados:
add <nombre> -pw <password> [-fname <nombre> -lname <apellido>]


-fname y -lname son opcionales.


Espero que se me entienda y haber aportado algo de ayuda.


Saludos,
  • 0

#4 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1484 posts
  • LocationMallorca

Posted 10 October 2011 - 02:49 AM

Hola compañeros tengo tres preguntas, sobre como desde delphi poder actuar sobre firebird  1ª) Como hago para conectar el servidor de firebird si esta desconectado desde mi ejecutable?


Tienes que comprovar si el servicio Firebird Server está en ejecución y ponerlo en marcha si es necesario.

2ª) Como descubro cual es la ruta de firebird desde mi ejecutable?  3ª) Como creo desde Delphi, sea llamando al gen (creo que es así), o de que otro método creo un user name y un password para que lo admita firebird?.    Un saludo y gracias por vuestra ayuda como siempre.


Si utilizas el último Firebird (Firebird 2.5), no es necesario.

Puedes conectar temporalmente a la base de datos con SYSDBA/masterkey, y crear el usuario mediante el nuevo comando CREATE/ALTER USER

Saludos.
  • 0

#5 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1092 posts
  • LocationMurcia, España

Posted 10 October 2011 - 02:58 AM

FireBird está pensado para cliente-servidor, y si tienes 10 clientes en diferentes PCs, tus preguntas 1 y 2 dejan de tener sentido: se supone que el servidor siempre está activado.

Así que supongo que es para algo que corre todo en local, cliente y servidor, y por lo tanto, lo suyo es usar el FireBird embeded, el cual es solo una DLL que se guarda junto a tu ejecutable, y solo admite conexiones localesm, nada de red.

Siendo así, de 1 y 2 no te preocupas, al acceder a la base de datos tu exe llama a la DLL y el servidor se activa el solito, sin necesidad de conoecer rutas ni nada.

Respecto de 3, crear un usuario, yo personalmente no lo hago, siempre uso SYSDBA masterkey para acceder al servidor, porque has de tener en cuenta que esos usuarios son por servidor, no por base de datos (esto último creo que estaba a punto de salir, puede que V2.5. lo traiga ya) con lo que ir creando usuarios en la base de datos uno por usuario de la aplicación, no parece muy adecuado.
  • 0

#6 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 posts
  • LocationEspaña

Posted 10 October 2011 - 09:55 AM

Gracias a todos por sus repuestas, 1º el problema del servidor me ocurre desde haces unos meses en el equipo de la empresa, el problema es que he de inicial izarlo manualmente, luego mientras no reinicies el equipo, funciona perfectamente, lo que ocurre, es que si algún día no puedo ir a trabajar por enfermedad, mi socio no tiene ni idea de como hacerlo, por este motivo, es la pregunta, la idea ponerlo al principio, preguntar si el servidor esta activo, si no es así activarlo, pero la verdad no tengo ni idea?. (Por cierto he reinstalado Firebird, desistalarlo, volverlo a instalar, instalar la última versión y sigue el problema, pero yo creo que es el Windows que es el vista y la verdad hace unas cuantas cosas raras.


en cuanto a la 2ª y 3ª preguntas, es por la versión de mi programa creatablas si uso el Gsec (y no gen como puse) antes de crear la tabla no tengo problemas, en luego usar ese usuario y password, pero si no problema al cántaro, por lo tanto lo primero es localizar el directorio para poder usar el Gsec y después ejecutar el comando, de manera que el usuario, no tendría que interactuar.
  • 0

#7 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1092 posts
  • LocationMurcia, España

Posted 11 October 2011 - 02:34 AM

Es raro que FireBird no te arranque al iniciar el windows, comprueba que lo instalaste con la opcion de "como servicio" y con el "guardian" activo (las opciones por defecto) y luego comprueba que en la lista de servicios fbguardian te aparece como activo y con arranque "automatico", mientras que fbserver deberia aparecer como "manual" y tambien activo.

Si alguno no está activo, mira el visor de sucesos a ver el porque (mi pc, administrar, y por los mensu tienes lo del visor de sucesos que te da una lista de errores al arrancar windows y esas cosas).

En cualquier caso, arrancar firebird a mano es solo cuestion de Panel de control, FireBird, botón de Activar...
  • 0




IP.Board spam blocked by CleanTalk.