L'IBPP est très stable et je le recommande pour la production. Autrement dit, si vous allez l'utiliser pour des applications régulières. Si vous voulez construire un outil d'administration ou quelque chose de similaire, préparez-vous à rentrer dedans et à vous salir les mains car certaines des nouvelles fonctionnalités (Firebird 2.5) ne sont pas SQL mais les améliorations de l'API ne sont pas supportées. Par exemple, il manque une couche qui exposerait la nouvelle API de trace.
Quoi qu'il en soit, allez-y et je l'utilise. J'ai un tas d'applications IBPP en production depuis des années, et, comme Douglas l'a écrit, FlameRobin utilise IBPP et cela fonctionne parfaitement (au moins en ce qui concerne la couche DB). La seule chose dont il faut se méfier est les champs NUMERIC, qui sont stockés en interne sous forme d'entier + échelle dans Firebird. IBPP les expose via C/C++ "double", mais aussi via un entier 16/32/64bit. Soyez donc très prudent lorsque vous récupérez de telles valeurs, car vous n'obtiendrez aucun avertissement. Par exemple, si vous avez un champ DECIMAL (18,2) avec une valeur de 254,00, et que vous avez accidentellement lu cela dans un entier, vous obtiendrez 25400, pas 254. Assurez-vous de les lire en double ou de les redimensionner plus tard. Ceci est utile car vous pouvez convertir en toute sécurité 25400 en chaîne puis ajouter un point décimal, de sorte que vous ne perdiez pas de précision en double (tout dépend du type de votre application et des chiffres qui comptent, bien sûr).
Pour le premier point de mghie: Vous avez absolument raison, mais entrer dans le code et changer le chemin de la bibliothèque client est vraiment facile (fichier: "_ibpp.cpp", section: GDS :: Call()). Étant donné que la bibliothèque cliente pour la base de données intégrée "fbembed.dll" autorise également les connexions à une base de données distante (fbclient.dll semble être un sous-ensemble de fbembed.dll), vous n'avez peut-être jamais besoin de modifier la bibliothèque client. –
@Ergodicity: Vrai, mais c'est toujours une bibliothèque client unique pour toutes les connexions. Ma réponse a été en ce qui concerne l'utilisation de plusieurs bibliothèques client en même temps, ce qui est une caractéristique courante des outils clients de Firebird comme FlameRobin (qui ne l'a toujours pas). Ce n'était pas possible alors (il y a plus de 5 ans), et AFAIK la situation n'est pas vraiment différente aujourd'hui. Cela peut être intéressant en soi dans le contexte de la question, re "le projet n'a pas beaucoup d'activité en cours" ... – mghie
@mghie diriez-vous, on devrait mieux utiliser la [ibp fork utilisée dans Flamerobin] (https : //github.com/mariuz/flamerobin/tree/master/src/ibpp) (dans son état actuel)? – Wolf