C# 下读写VF数据库

之前的时候挺好的程序 现在使用的是64的win7 在操作VF数据库 列数超过64列就开始报这个错误!

很奇怪 这是什么问题呢!

然后修改了连接字符串就好了! 如下边代码所示:

 static void Main(string[] args)
        {
            Console.WriteLine("可以进行数据测试……");
            Console.WriteLine("正在清空DBF的文件内容");
            int Int_DeleteRowsInDbf = DeleteRowsInDBF("test.dbf");
            int Int_PackDbf = Function_DbfPack("test.dbf");
            //之前的连接字符串
            //@"Provider=vfpoledb;Data Source=" + AppDomain.CurrentDomain.BaseDirectory + ";Collating Sequence=machine;TABLEVALIDATE=0";
            //现在的连接字符串
            string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + AppDomain.CurrentDomain.BaseDirectory + @"/;Extended Properties=""dBASE IV;HDR=Yes;"";";
            using (OleDbConnection myConnection = new OleDbConnection(strConn))
            {
                myConnection.Open();
                OleDbDataAdapter adpt = new OleDbDataAdapter("select * from test.dbf", myConnection);
                OleDbCommandBuilder odcb = new OleDbCommandBuilder(adpt);
                DataSet mySet = new DataSet();
                adpt.Fill(mySet, "Datasource");
                DataRow myDataRow;
                DataTable myDataTable;
                myDataTable = mySet.Tables["Datasource"];
                for (int i = 0; i < 2000; i++)
                {
                    myDataRow = myDataTable.NewRow();
                    myDataRow["yhbh"] = "001".PadLeft(8, '0');
                    myDataRow["dbbh"] = "DBB00001";
                    myDataRow["yhxm"] = "用户姓名";
                    myDataRow["tdcs"] = 0;
                    myDataRow["yhdz"] = "MPH0000001";
                    myDataRow["sydl"] = 0;
                    myDataRow["ljydl"] = 0;
                    myDataRow["dqjygdn"] = 0;
                    myDataRow["dqfygdn"] = 0;
                    myDataRow["dqpygdn"] = 0;
                    myDataRow["dqgygdn"] = 0;
                    myDataRow["dbcs"] = 0;
                    myDataRow["gfhtzcs"] = 0;
                    myDataRow["ffkckcs"] = 0;
                    myDataRow["zjycgddl"] = 0;
                    myDataRow["ljgdl"] = 0;
                    myDataRow["sgdkcs"] = 0;
                    myDataRow["zj1csgdkrq"] = "00/00/00  00:00";
                    myDataRow["wgdkcs"] = 0;
                    myDataRow["zj1cwgdkrq"] = "00/00/00  00:00";
                    myDataRow["sgkgcs"] = 0;
                    myDataRow["sgkgljsj"] = "000000";
                    myDataRow["zjsgkgkssj"] = "00/00/00  00:00";
                    myDataRow["zjsgkgjssj"] = "00/00/00  00:00";
                    myDataRow["zj1csgkgks"] = "00/00/00  00:00";
                    myDataRow["zj1csgkgjs"] = "00/00/00  00:00";
                    myDataRow["zj2csgkgks"] = "00/00/00  00:00";
                    myDataRow["zj2csgkgjs"] = "00/00/00  00:00";
                    myDataRow["wgkgcs"] = 0;
                    myDataRow["wgkgljsj"] = "000000";
                    myDataRow["zjwgkgkssj"] = "00/00/00  00:00";
                    myDataRow["zjwgkgjssj"] = "00/00/00  00:00";
                    myDataRow["zj1cwgkgks"] = "00/00/00  00:00";
                    myDataRow["zj1cwgkgjs"] = "00/00/00  00:00";
                    myDataRow["zj2cwgkgks"] = "00/00/00  00:00";
                    myDataRow["zj2cwgkgjs"] = "00/00/00  00:00";
                    myDataRow["gztzcs"] = 0;
                    myDataRow["ZJ1CGZTZSJ"] = "00/00/00  00:00";
                    myDataRow["ZJ2CGZTZSJ"] = "00/00/00  00:00";
                    myDataRow["ZJ3CGZTZSJ"] = "00/00/00  00:00";
                    myDataRow["dbcs"] = 0;
                    myDataRow["zjd1ctddjl"] = 0;
                    myDataRow["zjd2ctddjl"] = 0;
                    myDataRow["zjd3ctddjl"] = 0;
                    myDataRow["zj1cqfkssj"] = "00/00/00  00:00";
                    myDataRow["zj1cqfjssj"] = "00/00/00  00:00";
                    myDataRow["zj2cqfkssj"] = "00/00/00  00:00";
                    myDataRow["zj2cqfjssj"] = "00/00/00  00:00";
                    myDataRow["zj3cqfkssj"] = "00/00/00  00:00";
                    myDataRow["zj3cqfjssj"] = "00/00/00  00:00";
                    myDataRow["cbzt"] = 0;
                    myDataRow["cbrq"] = "00/00/00  00:00";
                    //S1YQS
                    myDataRow["S1YQS"] = 0;
                    myDataRow["s1yzs"] = 0;
                    myDataRow["s1ycsdl"] = 0;
                    myDataRow["s2yqs"] = 0;
                    myDataRow["s2yzs"] = 0;
                    myDataRow["s2ycsdl"] = 0;
                    myDataRow["zzbm"] = "000000001";
                    myDataRow["qydm"] = "QYDM000000001";
                    //2015年3月17日修改程序以后的数据项需要支持抄收六个月的数据所以这边需要添加一部分新的数据列
                    //S3YQS  S3YZS  S3YCSDL
                    //S4YQS  S4YZS  S4YCSDL
                    //S5YQS  S5YZS  S5YCSDL
                    //上三月起数 止数 差数电量
                    myDataRow["s3yqs"] = 0;
                    myDataRow["s3yzs"] = 0;
                    myDataRow["s3ycsdl"] = 0;
                    //上四月起数 止数 差数电量
                    myDataRow["s4yqs"] = 0;
                    myDataRow["s4yzs"] = 0;
                    myDataRow["s4ycsdl"] = 0;
                    //上五月起数 止数 差数电量
                    myDataRow["s5yqs"] = 0;
                    myDataRow["s5yzs"] = 0;
                    myDataRow["s5ycsdl"] = 0;
                    myDataTable.Rows.Add(myDataRow);
                    //adpt.Update(mySet.GetChanges(), "Datasource");
                    //mySet.Tables["Datasource"].AcceptChanges();
                    Console.WriteLine("正在执行第" + (i + 1) + "行的插入工作!");
                }
                adpt.Update(mySet.GetChanges(), "Datasource");
                mySet.Tables["Datasource"].AcceptChanges();
                myConnection.Close();
            }
            Console.WriteLine("执行完毕……");
            Console.ReadLine();
        }

资源下载地址:

http://download.csdn.net/detail/energeticsunxiaocong/8517243

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用oledb取dbf文件报错--“外部表不是预期的格式” 我的代码如下 string ole_connstring=String.Empty; ole_connstring = @"Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=dBASE IV;Data Source="+FilePath; OleDbConnection ole_conn = new OleDbConnection(ole_connstring); ole_conn.Open(); string insertsql="Insert into ["+tableName+"] (.......; OleDbCommand da=new OleDbCommand(insertsql,ole_conn); da.ExecuteNonQuery(); DBF版本问题,用VFP9的OLEDB即可 方法一: 进入VFP USE TT COPY TO NEWTT TYPE FOX2X 此方法是把表的文件版本转为新的VFP文件版本解决版本问题。 方法二: 升级JET 引擎到SP8,安装MDAC 2.8,到MS的网站去找 1、VFP9的驱动是最新的,各种版本的DBF均可出; 2、你的连接字串是用JET的引擎,故要升级JET及MDAC; 3、所需文件在MS的网站均有下载。 方法三: 安装vfpoledb.exe(VFP9的OLEDB),在项目中引用Microsoft OLE DB Provider for FoxPro 7.0 Type Library 1.0,然后使用如下代码: OleDbConnection con = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=D:\\2006工程\\南京建设质量监督站\\资料;Collating Sequence=MACHINE"); con.Open(); DataTable dtQY=new DataTable(); OleDbDataAdapter adapt=new OleDbDataAdapter(); adapt.MissingSchemaAction=MissingSchemaAction.AddWithKey; adapt.SelectCommand = new OleDbCommand("select * from 200512.DBF",con); adapt.Fill(dtQY); adapt.Dispose(); DataView dvQY = dtQY.DefaultView; dtQY.Dispose(); con.Close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值