2009-04-16 18 views
1

Ich schreibe ein C# -Programm, um FoxPro-Datenbank in Datentabelle zu bekommen, alles funktioniert, außer das Memofeld ist leer oder ein seltsames Zeichen. Ich verwende C# .Net 2.0. Ich habe den Code von Jonathan Demarks vom 12. Januar versucht. Ich bin in der Lage, den Index zu bekommen, aber ich weiß nicht, wie man diesen Index verwendet, um die Daten aus Memo-Datei zu holen.Wie extrahiere ich Daten aus einem FoxPro-Memofeld mit .NET?

Bitte helfen Sie mir.

Dank Madhu

Antwort

0

Haben Sie die FoxPro OLEDB provider mit ausprobiert? Wenn die Datenbank keine Funktionen verwendet, die mit VFP8 oder 9 eingeführt wurden (insbesondere Datenbankereignisse), können Sie auch den ODBC-Treiber verwenden.

Sind diese allgemeinen Felder Dokumente oder Bilder oder Textmemos oder Binärmemos? Welchen Code verwenden Sie, um die Daten zu extrahieren?

+0

Hallo Stuart, thanQ Binär Memos. OleDbConnection Conn = neue OleDbConnection (@ "Provider = VFPOLEDB.1; Datenquelle = C: \ Dokumente und Einstellungen \ All Users \ Documents \ LSP \ LEVEL2.dbf"); Conn.Open(); Oledbadapter da = neuer OleDbDataAdapter ("Select * From LEVEL2", Conn); da.fill (ds); und ich versuche jedes Feld zu lesen –

1

Ich habe die folgende Funktion erstellt, die das von der Auswahl zurückgegebene Objekt in ein Array von Bytes konvertiert.

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(); 
} 

Dann können Sie den Wert anzeigen.

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

Sie haben jetzt den Wert in einer C# nativen Zeichenfolge und können damit tun, was Sie wollen.