2009-04-16 4 views
1

J'écris un programme C# pour que la base de données FoxPro devienne datatable tout fonctionne, sauf que le champ memo est vide ou un caractère étrange. J'utilise C# .Net 2.0. J'ai essayé le code posté par Jonathan Demarks en date du 12 janvier. Je suis capable d'obtenir l'index mais je ne sais pas comment utiliser cet index pour aller chercher les données du fichier mémo.Comment puis-je extraire des données d'un champ mémo FoxPro à l'aide de .NET?

Merci de m'aider.

Merci Madhu

Répondre

0

Avez-vous essayé d'utiliser le FoxPro OLEDB provider? Si la base de données n'utilise pas les fonctionnalités introduites par VFP8 ou 9 (notamment les événements de base de données), vous pouvez également utiliser le pilote ODBC.

Ces champs généraux contiennent-ils des documents ou des images, ou des mémos texte ou des mémos binaires? Quel code utilisez-vous pour extraire les données?

+0

Salut Stuart, thanQ Binary Memos. OleDbConnection Conn = new OleDbConnection (@ "Fournisseur = VFPOLEDB.1; Source de données = C: \ Documents and Settings \ Tous les utilisateurs \ Documents \ LSP \ LEVEL2.dbf"); Conn.Open(); Oledbadapter da = new OleDbDataAdapter ("Sélectionnez * De LEVEL2", Conn); da.fill (ds); et j'essaie de lire chaque champ –

1

J'ai créé la fonction ci-dessous qui convertit l'objet renvoyé par la sélection en un tableau d'octets.

private byte[] ObjectToByteArray(Object obj) 
{ 
    if (obj == null) 
    { 
     return null; 
    } 

    BinaryFormatter bf = new BinaryFormatter(); 
    MemoryStream ms = new MemoryStream(); 
    bf.Serialize(ms, obj); 
    return ms.ToArray(); 
} 

Ensuite, vous êtes capable d'afficher la valeur.

byte [] dBytes = ConvertObjectToByteArray(dr["profile"]); 
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); 
string str = enc.GetString(dBytes); 

Vous avez maintenant la valeur dans une chaîne native C# et pouvez faire ce que vous voulez avec.

Questions connexes