知识大全 使用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] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 不同的type不但
在C#中如何读取配置文件[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!通过上面的代码我们可以
C#如何读取和创建INI文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在做项目过程中有时需
在c#中运用到操作流时首先要加入以下两个命名空间 usingSystemIO; usingSystemCollections; 我总结了以下几种方式来进行IO操作很简便但却很实用 目录的创
C#怎样用excel.dll读取excel文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
C#中通过读取配置文件动态创建泛型对象 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 背景 我
如何读取FoxPro(dbf)打删除标记的记录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最
C#FTP操作类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近要做个用ftp读取文件并在浏
c#通过网线读取三菱PLC数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! publicsta
C#对数据库的读取,写,更新和删除 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ●读取数据其中