IBPP es muy estable y lo recomendaría para la producción. Es decir, si va a usarlo para aplicaciones regulares.
Si desea construir una herramienta de administración o algo similar, prepárese para entrar y ensuciarse las manos ya que algunas de las características más nuevas (es decir, cosas de Firebird 2.5) que no son SQL sino API no son compatibles. Por ejemplo, falta una capa que exponga la nueva API de seguimiento.
De todos modos, adelante y lo uso. Tengo un montón de aplicaciones de IBPP en producción desde hace años, y, como Douglas escribió, FlameRobin está utilizando IBPP y funciona sin problemas (al menos en lo que respecta a la capa de DB).
Lo único que debe tener cuidado con los campos NUMERIC, que se almacenan internamente como una escala entera en Firebird. IBPP expone aquellos a través de C/C++ "doble", pero también a través de un entero de 16/32/64 bits. Así que tenga mucho cuidado al recuperar dichos valores, ya que no recibirá ninguna advertencia. Por ejemplo, si tiene un campo DECIMAL (18,2) con un valor de 254.00 y accidentalmente lo lee en un entero, obtendrá 25400, no 254. Asegúrese de leerlos como doble o escalarlos más adelante. Esto es útil porque puede convertir 25400 a cadena de manera segura y luego agregar un punto decimal, para que no pierda precisión con el doble (todo depende del tipo de su aplicación y qué dígitos cuentan, por supuesto).
Para el primer punto de mghie: Tiene toda la razón, pero entrar en el código y cambiar la ruta de la biblioteca del cliente es realmente bastante fácil (archivo: "_ibpp.cpp", sección: GDS :: Llamada()). Dado que la biblioteca del cliente para la base de datos incrustada "fbembed.dll" también habilita las conexiones a una base de datos remota (fbclient.dll parece ser un subconjunto de fbembed.dll) quizás nunca necesite cambiar la biblioteca del cliente. –
@Ergodicity: Es cierto, pero sigue siendo una sola biblioteca de cliente para todas las conexiones. Mi respuesta fue con respecto al uso de bibliotecas cliente múltiples al mismo tiempo, que es una característica común de las herramientas del cliente Firebird como FlameRobin (que todavía no lo tiene). Eso no fue posible entonces (hace más de 5 años), y AFAIK la situación no es realmente diferente hoy en día. Esto en sí mismo puede ser interesante en el contexto de la pregunta, si "el proyecto no tiene mucha actividad" ... – mghie
@mghie diría que es mejor utilizar el [tenedor ibpp utilizado en Flamerobin] (https : //github.com/mariuz/flamerobin/tree/master/src/ibpp) (en su estado actual)? – Wolf