2017-05-26 7 views
0

Je me suis déjà connecté à des bases de données foxpro, mais seulement celles qui ont un fichier .dbf et .idx.Problèmes de chaîne de connexion OLEDB C# VFP (DBF et CDX par rapport à DBF et IDX)

j'enregistrer le fournisseur Microsoft Ole DB pour Visual FoxPro 7.0 et utiliser le type de code suivant:

string sqlSTR = "SELECT * FROM TableName"; 
    string strConnect = @"Provider=VFPOLEDB.1;Data Source=C:\Stuff.dbf;Extended Properties=dBASE IV;" 

et ouvrez la connexion. Ce fichier, cependant, a un fichier .dbf et .cdx (qui, en lecture en ligne semble être la structure de la base de données). Lorsque j'utilise la chaîne de connexion ci-dessus et le code suivant:

OleDbConnection myConn = new OleDbConnection(strConnect); 
myConn.Open() 

Il ne l'erreur ni quoi que ce soit, mais l'exécution du programme se bloque ici. J'ai plusieurs autres parties du même programme qui se connectent aux fichiers avec un fichier dbf + idx présent (pas cdx). Qu'est-ce que je fais de mal que je dois corriger?

J'utilise sqlSTR pour des opérations ultérieures en utilisant un adaptateur de données btw.

+0

Je suis assez sûr que toute référence à dBase IV dans la chaîne de connexion est fausse. Essayez-le sans cette partie. –

+1

En fait, le fichier CDX est un fichier d'index et non la structure de la base de données. – Hank

Répondre

1

Affichage de cette réponse pour toute personne ayant le même problème.

La référence pour la dBase IV n'a en fait aucune importance; c'est le cas pour l'ancienne combinaison DBF + IDX de fichiers foxpro et est nécessaire (pensez à VFP tôt ou avant VFP de retour dans foxpro 2.0 jours).

Tout ce qui me manquait, c'était les fichiers * .dbc, * .dct et * .dcx dans le même répertoire qui lui étaient également associés. Il m'a lancé car ces fichiers étaient en fait un nom de fichier de base différent de celui des fichiers Stuff.dbf/Stuff.cdx.

Je viens d'utiliser try {} catch {} et de mettre l'exception à la boîte de message et il m'a dit quel (nom différent) il cherchait.

Merci pour l'aide!

1

Votre chaîne de connexion est erronée. Il devrait être comme:

string sqlSTR = "SELECT * FROM TableName"; 
string strConnect = @"Provider=VFPOLEDB;Data Source=C:\;" 

L'utilisation de c: \ comme emplacement pour les fichiers de base de données (ou autres fichiers) est discutable.

+0

@J W, Cetin est correct. Le problème est que la connexion doit pointer vers le PATH où les fichiers sont situés, pas le nom complet de la table que vous interrogez. Je peux seulement supposer que vous avez simplifié votre connexion à la racine de C: \, mais que vous seriez autrement dans un autre chemin. – DRapp