c# – 从SQL表记录创建.DBF文件

我想从sql表记录创建一个.DBF文件.

例如,如果在sql中有一个名为CountryMaster的表,它有5列:

> ID int identity(1,1)
>名称varchar(100)
>详细信息varchar(200)
>状态位
> CreatedDate日期时间

它有100行.

如何使用C#中的.DBF文件中的头文件导出这些记录?

注意:创建的.DBF文件大小必须非常紧凑.

解决方法

您可以看到 Xbase Data file (*.dbf)结构并编写自己的代码,但我已经完成了实现,并且已经使用了多年.在这里,您可以在 GitHub找到它

如何使用该库

在名为DbfFile.cs的文件中有一些写入方法.你可以使用它们中的任何一个.我将解释其中一些:

第一种写法

将DataTable另存为dbf文件

static void Write(string fileName,System.Data.DataTable table,Encoding encoding)

> fileName:是您希望保存.dbf输出文件的位置.
> table:是您从sql Server或任何其他来源读取的数据.
> encoding:保存字符串数据时使用的编码

第二种写法

保存列表< T>进入dbf文件.

static void Write<T>(string fileName,List<T> values,List<Func<T,object>> mapping,List<DbfFieldDescriptor> columns,Encoding encoding)

读取数据库并将结果保存到某个类类型,然后使用此方法将类值保存到dbf文件.这是对它的参数的描述:

> fileName:要保存的dbf文件
> values:您的数据作为要保存到dbf文件中的类型T的对象列表
> mapping:告诉此方法如何从类类型中检索数据的函数列表.
> columns:dbf列信息
> encoding:dbf文件的编码.

第二种写入方法的示例

由于第一种方法是直接的,我提供了第二种写方法的示例.考虑您要保存List< MyClass>将数据转换为dbf文件.这是代码

class MyClass
{
    public int Id {get;set;}
    public string Name {get;set;}
}

现在您可以保存List< MyClass>进入像这样的dbf文件

var idColumn = DbfFieldDescriptors.GetIntegerField("Id");
var nameColumn = DbfFieldDescriptors.GetStringField("Name");
var columns = new List<DbfFieldDescriptor>() { idColumn,nameColumn };

Func<MyClass,object> mapId = myClass => myClass.Id;
Func<MyClass,object> mapName = myClass => myClass.Name;
var mapping = new List<Func<MyClass,object>>() { mapId,mapName };

List<MyClass> values = new List<MyClass>();
values.Add(new MyClass() { Id = 1,Name = "name1" });

DbfFileFormat.Write(@"C:\yourFile.dbf",values,mapping,columns,Encoding.ASCII);

Also using this library you can read dbf files and your code do not
depend on Microsoft.Jet.OLEDB or anything else.

好好享受.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...