知识大全 使用C#读取dbf行情文件

Posted 文件

篇首语:少年恃险若平地,独倚长剑凌清秋。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用C#读取dbf行情文件相关的知识,希望对你有一定的参考价值。

使用C#读取dbf行情文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  由于历史的原因 我国的上交所和深交所使用的还是dbf文件来进行行情数据的分发 关于卫星报盘系统 可以参考 这个博客中关于证券公司信息化的文章写的还是相当不错的 上交所使用的是show dbf文件 而深交所使用的是SJSHQ DBF 这种文件可以使用Visual FoxPro直接打开 查看其内容 接下来说说怎么使用C#读取其中的数据

  使用C#读取dbf文件 推荐使用OLE DB来读取(微软官方都不推荐使用ODBC来读) 首先需要下载安装Microsoft OLE DB Provider for Visual FoxPro 接下来就可以使用C#操作OLE DB 连接字符串为

  Provider=vfpoledb;Data Source=C:\\vfp;Collating Sequence=machine;

  这里C:\\vfp是一个文件夹路径 要读取的dbf文件就在这个文件夹下面 当然 如果dbf是在网络共享位置 那么也可以使用网络文件夹的路径 如果要读取深交所行情的所有数据 返回一个DataSet 那么对应的函数为

  public static DataSet ReadSJSHQ()

  

  string strConn = @ Provider=vfpoledb;Data Source=C:\\vfp;Collating Sequence=machine; ;

  using (OleDbConnection myConnection = new OleDbConnection(strConn))

  

  OleDbDataAdapter adpt = new OleDbDataAdapter( select * from SJSHQ DBF myConnection);

  DataSet mySet = new DataSet();

  adpt Fill(mySet);

  myConnection Close();

  return mySet;

  

  

  这个函数就可以把所有深交所的数据读取出来 如果要读取上交所的数据 那么就不会这么简单了 虽然使用这个方法把查询改成select * from show dbf也能读取返回一个数据集 但是这个返回的数据集是不完整的 前面大约 多行数据没有读取出来 如果使用Visual FoxPro打开show dbf文件可以查看到所有的数据内容 之所以没有返回前 多行的原因是因为dbf文件中将这些行置为删除状态了 所以如果要读取所有的数据行 那么需要设置当前读取的命令去掉删除标记 比如要读取上交所dbf文件中的所有S 列 那么对应的代码应该是

  public static DataSet ReadShow S ()

  

  string strConn = @ Provider=vfpoledb;Data Source=C:\\vfp;Collating Sequence=machine; ;

  using (OleDbConnection myConnection = new OleDbConnection(strConn))

  

  myConnection Open();

  OleDbCommand cmd = new OleDbCommand();

  cmd Connection = myConnection;

  cmd CommandText = SET DELETED OFF ;//去掉删除标记 拿到所有记录

  cmd CommandType = CommandType Text;

  cmd ExecuteNonQuery();

  OleDbDataAdapter adpt = new OleDbDataAdapter( select s from show dbf myConnection);

  DataSet mySet = new DataSet();

  adpt Fill(mySet);

  myConnection Close();

  return mySet;

  

  

  如果我们要获取show 里面的所有行所有列的数据 那么使用sql命令 select * from show dbf 是会抛出异常

  提供程序无法确定 Decimal 值 例如 该行刚刚创建 未提供 Decimal 列的默认值 并且使用者尚未设置新 Decimal 值

  而在不读取有删除标记的行时是不会报错的 这是因为前面的行中有些列值的问题 用Visual Foxpro打开show dbf文件 可以看到第一行S 为 的数据行 其S 列是当前dbf文件数据生成的日期 比如我现在的S 值为 这一列的数据定义是 数值型 宽度 小数位数 据说是设计上的Bug 参见 于是我们如果要正常读取这个表的话需要对第一行做特别处理 其实本来第一行就需要特殊处理的 因为第一行并不是实际的数据 第一行主要是说明这个文件产生的日期时间之类的 所有我使用的就是简单粗暴的方法 使用 个DataSet来返回这些数据 具体函数代码为

  public static DataSet ReadShow (DataSet mySet )

  

  string strConn = @ Provider=vfpoledb;Data Source=C:\\vfp;Collating Sequence=machine; ;

  using (OleDbConnection myConnection = new OleDbConnection(strConn))

  

  myConnection Open();

  OleDbCommand cmd = new OleDbCommand();

  cmd Connection = myConnection;

  cmd CommandText = SET DELETED OFF ;//去掉删除标记 拿到所有记录

  cmd CommandType = CommandType Text;

  cmd ExecuteNonQuery();

  //单独读取第一行

  OleDbDataAdapter adpt = new OleDbDataAdapter( SELECT  s s s s s str(s ) as s s s s s from show where s =\\ \\ myConnection);//只有这几个字段有值

  adpt Fill(mySet );

  //接下来读取其他行

  OleDbDataAdapter adpt = new OleDbDataAdapter( SELECT * from show where s <>\\ \\ myConnection);

  DataSet mySet = new DataSet();

  adpt Fill(mySet);

  myConnection Close();

  return mySet;

  

  

cha138/Article/program/net/201311/13446

相关参考

知识大全 在C#中如何读取配置文件[2]

在C#中如何读取配置文件[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  不同的type不但

知识大全 在C#中如何读取配置文件[3]

在C#中如何读取配置文件[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!通过上面的代码我们可以

知识大全 C#如何读取和创建INI文件

C#如何读取和创建INI文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在做项目过程中有时需

知识大全 c#文件的创建、读取及写入

  在c#中运用到操作流时首先要加入以下两个命名空间  usingSystemIO;  usingSystemCollections;  我总结了以下几种方式来进行IO操作很简便但却很实用  目录的创

知识大全 C#怎样用excel.dll读取excel文件

C#怎样用excel.dll读取excel文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 C#中通过读取配置文件动态创建泛型对象

C#中通过读取配置文件动态创建泛型对象  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  背景  我

知识大全 如何读取FoxPro(dbf)打删除标记的记录

如何读取FoxPro(dbf)打删除标记的记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最

知识大全 C# FTP操作类

C#FTP操作类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近要做个用ftp读取文件并在浏

知识大全 c#通过网线读取三菱PLC数据

c#通过网线读取三菱PLC数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  publicsta

知识大全 C#对数据库的读取,写,更新和删除

C#对数据库的读取,写,更新和删除  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ●读取数据其中