如何使用C#/。NET ODBC或OLE读取/写入dBase III文件?

如何使用C#/。NET ODBC或OLE读取/写入dBase III文件?

How to read/write dBase III files using C#/.NET ODBC or OLE?

我已经搜索了有关如何使用OLEDB或ODBC和C#/。NET来读取/写入dBase III(dbf)文件的各种技术。 我已经尝试了几乎所有发布的技术,但是都没有成功。 有人可以指出我正确的方向吗?

谢谢你的时间。


就像是 ... ?

1
2
3
4
 ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=e:\My Documents\dBase;Extended Properties=dBase III"
Dim dBaseConnection As New System.Data.OleDb.OleDbConnection(ConnectionString )
dBaseConnection.Open()

来自:http://bytes.com/forum/thread112085.html


我意识到这是一个旧线程,但万一有人通过google到达这里(就像我几天前一样)..正如我在这里所写,优雅的解决方案是使用LINQ to VFP读取和写入DBF文件。我用一些dBase III文件对其进行了测试。它是这样的:

您可以定义表以匹配DBF定义,如下所示:

1
2
3
4
5
6
7
public partial class MyTable
{
    public System.Int32 ID { get; set; }
    public System.Decimal Field1 { get; set; }
    public System.String Field2 { get; set; }
    public System.String Field3 { get; set; }
}

您可以这样定义上下文:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public partial class Context : DbEntityContextBase
{
    public Context(string connectionString)
        : this(connectionString, typeof(ContextAttributes).FullName)
    {
    }

    public Context(string connectionString, string mappingId)
        : this(VfpQueryProvider.Create(connectionString, mappingId))
    {
    }

    public Context(VfpQueryProvider provider)
        : base(provider)
    {
    }

    public virtual IEntityTable<MyTable> MyTables
    {
        get { return this.GetTable<MyTable>(); }
    }
}

您可以这样定义上下文属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public partial class ContextAttributes : Context
{
    public ContextAttributes(string connectionString)
        : base(connectionString) {
    }

    [Table(Name="mytable")]
    [Column(Member="ID", IsPrimaryKey=true)]
    [Column(Member="Field1")]
    [Column(Member="Field2")]
    [Column(Member="Field3")]
    public override IEntityTable<MyTable> MyTables
    {
        get { return base.MyTables; }
    }
}

您还需要一个连接字符串,您可以像这样在app.config中定义它(在这种情况下,Data\相对路径用作DBF文件的源):

1
2
3
4
<connectionStrings>
  <add name="VfpData" providerName="System.Data.OleDb"
    connectionString="Provider=VFPOLEDB.1;Data Source=Data\;"/>
</connectionStrings>

最后,您可以简单地执行与DBF文件之间的读写操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Construct a new context
var context = new Context(ConfigurationManager.ConnectionStrings["VfpData"].ConnectionString);

// Write to MyTable.dbf
var my = new MyTable
{
    ID = 1,
    Field1 = 10,
    Field2 ="foo",
    Field3 ="bar"
}
context.MyTables.Insert(my);

// Read from MyTable.dbf
Console.WriteLine("Count: " + context.MyTables.Count());
foreach (var o in context.MyTables)
{
    Console.WriteLine(o.Field2 +"" + o.Field3);
}


FoxPro 2.0文件与dBase III文件完全相同,但对于任何类型为" memo"的字段(都不确定确切的名称,已经有一段时间了),都需要多加一点。这意味着,如果仅使用FoxPro 2.x方法访问文件,则该方法应该有效。


我已经提供了许多使用数据库文件的答案(更具体地说是VFP,但是Microsoft VFP OleDb提供程序将识别较旧的dbase文件。您可以通过以下方式进行搜索以找到更多这些链接:

使用者:74195 [vfp] [oledb]

首先,我将开始下载Microsoft VFP OleDb Provider。

接下来,如果您已经尝试连接一些dbf文件进行测试,则需要建立连接。连接必须指向文件所在的PATH,而不是特定的.dbf文件。因此,如果其中有一个包含20个表的文件夹,则连接到PATH后,您可以通过标准VFP-SQL语法(与许多sql相同,但其总体结构有所不同,但基于某些功能会有所不同),从任何/所有表中查询例如字符串,日期和数字操作)。

了解有关参数查询的信息。使用VFP OleDb,参数使用"?"完成。字符作为占位符,因此需要按照与查询中出现的顺序完全相同的顺序添加参数。"?"可以显示为字段值,连接条件,条件等。

以下是一些让您开始使用HOPEFULLY的提示,可以让您开始使用有效的连接,进行查询,然后使用参数进行插入/更新/删除。

  • 示例显示连接字符串和来自表的简单查询

  • 显示参数化的sql-insert,但是在这种情况下,从另一个数据源(例如sql-server)获取数据,并从中创建VFP / dbf样式表。它遍历记录,为每个参数提取值并插入。

  • 另一个显示参数化的SQL更新

  • 祝您好运,还有很多其他人对VFP和OleDb Access进行回答,这些只是我专门参与的部分,并展示了可能有些您可能会错过的功能实现。


    这是一个不错的方法,我没有经过测试,但是我很快就会...

    http://www.c-sharpcorner.com/uploadfile/rfederico/xbaseenginerfv12022005011623am/xbaseenginerfv.aspx


    推荐阅读

      linux拼接文件命令?

      linux拼接文件命令?,文件,数据,命令,代码,时间,信息,系统,情况,管理,标准,Lin

      linux文件常用命令?

      linux文件常用命令?,工作,地址,信息,系统,命令,目录,标准,情况,管理,常用命

      文件夹排序linux命令?

      文件夹排序linux命令?,系统,数字,信息,工作,时间,命令,管理,设备,单位,工具,

      linux打开文件夹命令?

      linux打开文件夹命令?,工作,系统,信息,命令,图片,文件,管理,发行,名字,名称,

      linux上清空文件命令?

      linux上清空文件命令?,系统,命令,文件夹,名字,档案,文件,目录,方法,终端,指

      linux读取命令行参数?

      linux读取命令行参数?,系统,信息,数据,名称,软件,位置,标准,灵活,百度,资料,L

      linux中历史命令文件?

      linux中历史命令文件?,系统,地址,信息,数字,时间,命令,数据,环境,历史,文件,l

      linux命令拷贝文件?

      linux命令拷贝文件?,系统,文件,命令,目录,情况,源文件,目标,文件夹,选项,语

      linux命令被替换文件?

      linux命令被替换文件?,系统,文件,命令,批量,工具,电脑,工作,保险,实时,字符

      压缩文件夹命令linux?

      压缩文件夹命令linux?,系统,软件,命令,工具,电脑,文件,文件名,格式,选项,目

      linux配置文件夹命令?

      linux配置文件夹命令?,地址,系统,工作,信息,命令,标准,服务,名称,位置,文件,l

      linux管理文件的命令?

      linux管理文件的命令?,系统,管理,工作,命令,信息,基础,目录,工具,文件,操作,l

      linux文件链接命令?

      linux文件链接命令?,系统,工作,地址,命令,网络,信息,工具,基础,管理,目录,lin

      linux命令文件授权?

      linux命令文件授权?,系统,工具,权限,文件,档案,数字,软件,信息,时间,电脑,lin

      linux删除命令文件夹?

      linux删除命令文件夹?,系统,数据,通用,文件夹,命令,文件,环境,百度,不了,名

      打包文件命令linux?

      打包文件命令linux?,系统,时间,工具,名称,命令,文件,目录,格式,表示,详细信

      linux命令行文件夹?

      linux命令行文件夹?,系统,名称,文件夹,不了,命令,文件,名字,通用,数据,首次,l

      进入文件夹linux命令?

      进入文件夹linux命令?,系统,密码,终端,目录,标的,一致,传播,图片,环境,工作,l

      d文件比较命令linux?

      d文件比较命令linux?,工作,系统,命令,地址,文件,信息,对比,数字,名称,一致,Li

      改文件linux命令行?

      改文件linux命令行?,地址,系统,工作,信息,数字,文件,命令,设备,密码,权限,lin