|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 69 ![]() |
Salut,
Je voudrais savoir s'il existe une façon plus ou moins digne de confiance pour pouvoir interconnecter une banque de données Interbase (version 4.0) avec un programme écrit sous C# .NET 2005. Tous les différents éléments de connexion que j'ai déjà essayés, par exemple, EasySoft Interbase (ODBC Origine de données), IBProvider (OleDB) et Borland Data Provider-BDP (ADO.NET) finissent par me donner le message d'erreur suivant: "unsupported on-disk structure for file e:\mibdd.gdb; found 2048 support 12" ("Structure sur le disque pas supportée pour le fichier e:\mibdd; trouvé 2048 support 12") En plus, en utilisant quelques outils pour vérifier la structure interne de la banque de données réferée, parmi lesquelles je peux mentionner IBSurgeon, on reçoit la remarque que "It seems that file is not valid database or header page is corrupted. Please enter page size manually" (Il semble que le fichier n'est pas une banque de données valide ou que l'en-tête est corrompu). A votre avis, que peut-il se passer? Problème d'incompatibilité entre Interbase 4.0 et les système d’exploitation Windows actuels (XP, Vista)? Merci d'avance. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
Il faudrait commencer par établir un diagnostic avec les outils qui ont été fournis avec cette version d'IB.
En effet, s'agissant d'une version plutôt ancienne, des différences sont certainement intervenues sur la structure interne du GDB, et les outils récents n'en tiennent pas nécessairement compte (pb d'ODS par ex.) cf: http://dn.codegear.com/article/25497
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet) ----------------------- Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MPUsus magister est optimus |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 69 ![]() |
Merci de la réponse,
Le problème de sauver la saute de versions serait résolu, mais je vois encore un handicap, et c'est sa manque de dynamisme, c'est-à-dire, on doit, d'une certaine façon, geler l'état de la banque de données pour lui faire le backup, la transmettre du serveur vers le client et enfin le restaurer au client pour faire la "query". Mais si je voudrais faire une opération d' "insert" ou "delete", je devrais, en plus, faire un backup à la machine locale et après envoyer la banque de données vers la machine serveuse, où la restauration de la banque devrait avoir lieu. Par exemple, je connais quelques produits commerciaux, tels que le client BDE Administrator 5.01 (pour Interbase 4.0), lesquels, installés à la machine locale, peuvent jeter une consultation á la machine remote (IB 4.0). Ma question serait alors savoir si je pourrais jeter la "query" à une DLL de ce produit ou de quelqu'un de similaire pour oculter les difficultés de l'opération et oublier de la commande GBAK. Merci d'avance. |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 69 ![]() |
La solution au problème d'accès consistait à installer la libraire gds32.dll correspondant à la version 4.0 du serveur InterBase 4.0. Tous les différents "connectors" (ADO.NET, OleDB, ODBC .NET) que j'avais déjà essayés depuis mon code C# fonctionnent bien maintenant!
Avec ça, j'ai réussi à accéder la banque de données, mais une nouvelle erreur est là. Je pense qu'il ne sera pas si difficile à effacer, mais je dois savoir comment lui faire face. L'erreur est la suivante: "[Interbase]Dynamic SQL Error; SQL Error Code=-901, feauture is not supported" Quelle est la "feature" pas présente? Quelques idées? Merci à nouveau. |
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
Il n'y a guère que toi qui puisses répondre à cette question....
Ce message vient sur quelle opération ?
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet) ----------------------- Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MPUsus magister est optimus |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 69 ![]() |
L'erreur apparaît après avoir fait un simple:
"SELECT * FROM maTable" Une fois que la connexion ait été établie correctement. |
|
|
00
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
Je me doute que tu sollicites le serveur pour obtenir cette erreur, mais quel est le contexte ?
- dans ton appli ? - outil tiers ? - outil "natif" interbase ? - autre ?
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet) ----------------------- Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MPUsus magister est optimus |
|
|
00
|
|
|
#8 | |||
|
Membre du Club
![]() Inscription : mars 2006 Messages : 69 ![]() |
Plus ou moins, le contexte est celui que j'avais déjà mentionné.
Depuis un code C#, j'utilise quelques "ponts" pour me connecter à la banque de données InterBase 4.0. Les trois alternatives que j'ai déjà testées sont: - ODBC (ODBC .NET). - OleDB (IBProvider). - ADO .NET (BDP - Borland Data Provider). En principe, en utilisant la libraire gds32.dll, en version 4.0, et en ajoutant certaines clés au Windows Registry (seulement dans le premier cas), j'ai réussi à accéder l'Interbase, mon problème maintenant c'est savoir comment faire correctement une query. L'accès est tout simple, il consiste seulement à ouvrir la connexion, faire une SELECT et fermer la connexion, mais je ne obtiens que des erreurs similaires au suivant avec n'importe quel pont j'emploie: Citation:
Code :
|
|||
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 69 ![]() |
Finalement, j'ai connecté ma banque de données IB 4.0 et mon programme C#.
La solution a consisté à ajouter le SQLDialect 1 (versions 2 et 3 supportées seulement par versions supérieurs d'Interbase) pour le driver ODBC .NET, et l'instruction auto_commit=true (pour éviter le message "Feature not supported") pour le IBProvider. Avec ça, on peut faire fonctionner les SELECTs, INSERTs, UPDATEs et DELETEs. Merci beaucoup de votre aide et le temps que vous avez dédié à lire le problème, à la fin résolu. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com