2013-01-23 2 views
0

J'écris une application en C# (.NET 4.0) qui doit s'intégrer avec une autre application beaucoup plus ancienne. Une partie de l'exigence est que mon programme doit lire les données de trois fichiers Btrieve. Je peux supposer que ces fichiers de données Btrieve existeront déjà sur les ordinateurs où mon programme est installé, et je peux également supposer que Pervasive PSQL V9 sera également installé et les programmes de services relationnels et transactionnels sont en cours d'exécution.Lire la base de données Pervasive 9 sans créer ODBC DSN

J'ai les fichiers DDF associés, et je peux les installer dans le cadre de mon application. La façon dont ils ont été créés, je dois les mettre dans un répertoire différent de celui où se trouvent les fichiers de données Btrieve. (Ils doivent être un sous-répertoire du répertoire où se trouvent les fichiers de données). Je ne connaissais rien à Pervasive ou Btrieve quand j'ai commencé, mais après un peu d'expérimentation, je suis arrivé au point où je peux créer un DSN en utilisant l'outil d'administration 32 bits ODBC, et je peux lire de la fichiers de données utilisant le connecteur ODBC ADO. Tout va bien jusqu'ici.

Ma question est, est-il possible de lire à partir de ces fichiers de mon programme .NET sans avoir à créer un DSN ODBC sur la machine? En d'autres termes, est-il possible de spécifier le répertoire où se trouvent les fichiers * .DAT et le répertoire où se trouvent les fichiers * .DDF dans la chaîne de connexion ODBC?

Je ne suis pas engagé à utiliser ODBC, je suis heureux d'utiliser OLEDB ou toute autre technologie qui me permet de lire de manière fiable à partir de ces fichiers en utilisant .NET.

Répondre

1

Bien qu'une connexion sans DSN vous permette de vous connecter sans DSN, vous avez toujours besoin d'un nom de base de données. Les noms de base de données omniprésents peuvent être créés à la volée en utilisant DTI ou DTO. En utilisant C#, je suggérerais DTO.
Si vous ne pouvez pas créer un nom de base de données, vous pouvez utiliser OLEDB. Il prend en charge l'utilisation d'un chemin dans le paramètre Data Source de la chaîne de connexion comme documenté dans la section Remote Connections de la documentation OLEDB. Une fois de plus, assurez-vous de compiler votre programme .NET en tant que x86 et non en AnyCPU. Le fournisseur OLEDB Pervasive est seulement 32 bits. Si vous installez votre application sur un système d'exploitation 64 bits compilé en tant que AnyCPU, il recherchera un fournisseur 64 bits et échouera.

+0

Merci pour votre réponse. J'ai essayé DTO et j'ai fait des progrès, mais j'ai de la difficulté à créer une base de données. J'ai posté [this] (http://stackoverflow.com/questions/14496587/create-pervasive-database-using-distributed-tuning-objects-dto) question, si vous êtes intéressé à répondre à celui-là aussi. –

0

Vous devez rechercher une connexion sans DSN. Au lieu de passer DSN = mydsn à la méthode connect (où mydsn est le DSN que vous avez configuré), vous passez DRIVER = xxx (où xxx est le nom du pilote) et tous les autres attributs dont il a besoin pour le diriger vers les fichiers. Il y a des tas de sites avec des listes de chaînes de connexion pour différents pilotes ODBC donc on est tenu de lister Pervasive si vous ne pouvez pas trouver la documentation pour votre pilote ODBC. Une autre alternative à regarder votre DSN dans le registre où vous trouverez les noms des attributs que vous devez spécifier.

Questions connexes