(准备)生成一个DataTable

 /// <summary>
/// 生成一个数据表
/// </summary>
/// <returns></returns>
static DataTable GetTable()
{
try
{
DataTable dt = new DataTable("Characters"); dt.Columns.Add("Column0");
dt.Columns.Add("Column1");
dt.Columns.Add("Column2");
dt.Columns.Add("Column3"); dt.Rows.Add("abc", "def", "ghi", "jkl");
dt.Rows.Add("def", "ghi", "jkl", "mno");
dt.Rows.Add("ghi", "jkl", "mno", "pqr");
dt.Rows.Add("jkl", "mno", "pqr", "stu"); Console.WriteLine("Set DataTable: " + dt.TableName);
foreach (DataRow dr in dt.Rows)
{
foreach (object obj in dr.ItemArray)
{
Console.Write(obj.ToString() + " ");
}
Console.WriteLine();
}
Console.WriteLine("Mission complete!"); return dt;
}
catch
{
return null;
}
}

函数:将DataTable的内容输出到DBF文件

 /// <summary>
/// 将数据表写入到DBF文件中
/// </summary>
/// <param name="dt"></param>
static void WriteToDbf(DataTable dt)
{
Console.WriteLine("Writing to: " + dt.TableName + ".dbf ..."); //连接字符串
string sConn =
"Provider=Microsoft.Jet.OLEDB.4.0; " +
"Data Source=" + System.IO.Directory.GetCurrentDirectory() + "; " +
"Extended Properties=dBASE IV;";
OleDbConnection conn = new OleDbConnection(sConn);
conn.Open(); try
{
//如果存在同名文件则先删除
if (File.Exists(dt.TableName + ".dbf"))
{
Console.WriteLine("Delete file: " + dt.TableName + ".dbf ...");
File.Delete(dt.TableName + ".dbf");
} OleDbCommand cmd; //建立新表
StringBuilder sbCreate = new StringBuilder();
sbCreate.Append("CREATE TABLE " + dt.TableName + ".dbf (");
for (int i = ; i < dt.Columns.Count; i++)
{
sbCreate.Append(dt.Columns[i].ColumnName);
sbCreate.Append(" char(25)");
if (i != dt.Columns.Count - )
{
sbCreate.Append(", ");
}
else
{
sbCreate.Append(')');
}
} Console.WriteLine("\nCreating Table ...");
Console.WriteLine(sbCreate.ToString());
cmd = new OleDbCommand(sbCreate.ToString(), conn);
cmd.ExecuteNonQuery(); //插入各行
StringBuilder sbInsert = new StringBuilder();
foreach (DataRow dr in dt.Rows)
{
sbInsert.Clear();
sbInsert.Append("INSERT INTO " + dt.TableName + ".dbf (");
for (int i = ; i < dt.Columns.Count; i++)
{
sbInsert.Append(dt.Columns[i].ColumnName);
if (i != dt.Columns.Count - )
{
sbInsert.Append(", ");
}
}
sbInsert.Append(") VALUES (");
for (int i = ; i < dt.Columns.Count; i++)
{
sbInsert.Append("'" + dr[i].ToString() + "'");
if (i != dt.Columns.Count - )
{
sbInsert.Append(", ");
}
}
sbInsert.Append(')'); Console.WriteLine("\nInserting lines ...");
Console.WriteLine(sbInsert.ToString());
cmd = new OleDbCommand(sbInsert.ToString(), conn);
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
} conn.Close();
}

Main函数中的调用

 static void Main(string[] args)
{
DataTable dt = GetTable(); //生成一个数据表
WriteToDbf(dt); //将数据表输出到DBF表中 Console.ReadLine();
7 }

运行结果

转自:http://my.oschina.net/Tsybius2014/blog/282797

C# 将DataTable存储到DBF文件中的更多相关文章

  1. 【VS开发】使用WinPcap编程(4)——把网络数据包存储到一个文件中

    这里用到的数据结构是pcap_dumper_t,这也是一个相当于文件描述符的东西,我们在用的时候先指定pcap_dumper_t *dumpfp; 使用两个函数来存储网络数据,一个是pcap_dump ...

  2. WPF RTSP存储到一个文件中的位置

    Vlc.DotNet.Core.Medias.MediaBase media1 = new Vlc.DotNet.Core.Medias.PathMedia(" CodeGo.net med ...

  3. 条形码的应用三-----------从Excel文件中读取条形码

    条形码的应用三------从Excel文件中读取条形码 介绍 上一篇文章,我向大家展示了生成多个条形码并存储到Excel文件中的一个方法.后来我又有了个想法:既然条码插入到excel中了,我可不可以从 ...

  4. <Android基础> (六) 数据存储 Part 1 文件存储方式

    第六章 数据存储 6.1 持久化技术 持久化技术指将内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失. 主要有三种方式用于简单地实现数据持久化功能:文件存储.S ...

  5. JavaDBF:保存行情实时数据到DBF文件

    JavaDBF.jar其实很早都不再更新了,在日新月异的科技圈算得上远古上神的jar包,早该身归混沌了. 但我们的项目要用到,因为之前做的大宗期货交易行情的分析文件依然是dbf文件,没有办法,还得用 ...

  6. Go Web:数据存储(2)——CSV文件

    存储到CSV文件中 1.内存存储 2.CSV文件存储 3.gob序列化存储 本文接上一篇:内存存储. 关于CSV文件的说明,见csv文件格式 当数据存储到了内存中,可以在需要的时候持久化保存到磁盘文件 ...

  7. 如何将Python对象保存在本地文件中?

    Python对象的永久存储 1.使用Python的pickle模块 import pickle class A: def __init__(self,name,a): self.name=name s ...

  8. IntelliJ IDEA + Maven iml文件中依赖项的需求是什么?

    在Maven中,项目的依赖关系在pom.xml文件中指定.在IntelliJ IDEA中,即使对于Maven项目,相同的信息也存储在iml文件中.在两个地方有相同的信息需要什么? 当导入Maven项目 ...

  9. 把数据存储到 XML 文件

    通常,我们在数据库中存储数据.不过,如果希望数据的可移植性更强,我们可以把数据存储 XML 文件中. 创建并保存 XML 文件 如果数据要被传送到非 Windows 平台上的应用程序,那么把数据保存在 ...

随机推荐

  1. Python的平凡之路(6)

    一.面向对象编程介绍 1 编程范式:          编程范式(Programming Paradigm)是某种编程语言典型的编程风格或者说是编程方式.随着编程方法学和软件工程研究的深入,特别是OO ...

  2. Ubuntu操作系统安装使用教程 (转)

    随着微软的步步紧逼,包括早先的Windows黑屏计划.实施,逮捕番茄花园作者并判刑,种种迹象表明,中国用户免费使用盗版Windows的日子将不会太长久了,那么这个世界上有没有即免费又易用的操作系统呢? ...

  3. WebView WebViewClient WebChromeClient

    在android中,浏览器的功能分成几个部分,每个部分分工明确,互相协作.其中: 1. WebView :专门负责网页数据解析和渲染: 2. WebViewClient :帮助WebView处理各种请 ...

  4. ARM compiler No such file or directory

    /********************************************************************************* * ARM compiler No ...

  5. Maven生命周期详解

    来源:http://juvenshun.iteye.com/blog/213959 Maven强大的一个重要的原因是它有一个十分完善的生命周期模型(lifecycle),这个生命周期可以从两方面来理解 ...

  6. Neo4j Index Notes

    Motivation GraphDatabasesBook: Robinson I., Webber J., Eifrem E. Graph Databases. 2013. 这本该是入门概念性质的书 ...

  7. 认识C++中的临时对象temporary object 分类: C/C++ 2015-05-11 23:20 137人阅读 评论(0) 收藏

    C++中临时对象又称无名对象.临时对象主要出现在如下场景. 1.建立一个没有命名的非堆(non-heap)对象,也就是无名对象时,会产生临时对象. Integer inte= Integer(5); ...

  8. bk. 2014.12.1

    typedef void (*halKeyCback_t) (uint8 key, uint8 state) 表示定义halKeyCBack_T为指向函数的指针,该函数的特点是形参(uint8,uin ...

  9. passing argument 3 of ‘wtk_hlv_rec_init’ discards ‘const’ qualifier from pointer target type

    -Werror,编译出现如下错误: src/wtk/exam/wtk_ndx.c:154:6: error: passing argument 3 of ‘wtk_hlv_rec_init’ disc ...

  10. 5天玩转C#并行和多线程编程

    5天玩转C#并行和多线程编程系列文章目录 5天玩转C#并行和多线程编程 —— 第一天 认识Parallel 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq 5天玩转C#并行和多线程编 ...