【问题标题】:How do I extract data from a FoxPro memo field using .NET?如何使用 .NET 从 FoxPro 备注字段中提取数据?
【发布时间】:2013-06-27 22:43:31
【问题描述】:

我正在编写一个 C# 程序来将 FoxPro 数据库放入数据表中,除了备注字段为空白或某些奇怪字符外,一切正常。 我正在使用 C# .Net 2.0。 我尝试了 Jonathan Demarks 于 1 月 12 日发布的代码。我能够获取索引,但我不知道如何使用该索引从备忘录文件中获取数据。

请帮帮我。

谢谢 马杜

【问题讨论】:

    标签: c# field using foxpro memo


    【解决方案1】:

    我创建了以下函数,将选择返回的对象转换为字节数组。

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

    然后你就可以显示值了。

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

    您现在拥有 C# 原生字符串中的值,并且可以用它做任何您想做的事情。

    【讨论】:

      【解决方案2】:

      您是否尝试过使用FoxPro OLEDB provider?如果数据库不使用 VFP8 或 9 引入的功能(特别是数据库事件),您也可以使用 ODBC 驱动程序。

      这些通用字段是否包含文档或图像,或文本备忘录或二进制备忘录?你用什么代码来提取数据?

      【讨论】:

      • 嗨 Stuart,thanQ 二进制备忘录。 OleDbConnection Conn = new OleDbConnection(@"Provider=VFPOLEDB.1;Data Source=C:\Documents and Settings\All Users\Documents\LSP\LEVEL2.dbf"); Conn.Open(); Oledbadapter da = new OleDbDataAdapter("Select * From LEVEL2",Conn); da.fill(ds);我正在尝试阅读每个字段
      猜你喜欢
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多