zoukankan      html  css  js  c++  java
  • 原创:一段利用C#2005操作FOXPRO表的函数

    由于工作需要,需要将一些数据保存到规定结构的FOXPRO库中,我采取的方法是这样的:

    首先,拷贝标准库(空库)到指定的要导出的文件夹,然后读取这个拷贝后的文件到dt1,通过循环把dt的数据添加到dt1中,更新dt1。方法笨了一点,有谁有好的建议,可以提一提!

    下面是函数代码:

    //五个参数,dt是含有需要导出数据的DataTable,strExportPath是导出路径,strExportFile是导出文件名,要带有.dbf的后缀,strStructFile是标准库的文件名,含有路径,prgBar是用来在界面上显示导出进度的。

    public static void dbfExport(System.Data.DataTable dt, string strExportPath, string strExportFile, string strStructFile,System.Windows.Forms.ProgressBar prgBar)
            {

                //第一步:拷贝标准库
                System.IO.File.Copy(strStructFile, strExportPath + @"\" + strExportFile, true);

                //建立连接,读取拷贝过去的那个库,注意连接字符串,使用的是vfp9.0的driver,微软网站上有下载
                System.Data.OleDb.OleDbConnection conn1 = new System.Data.OleDb.OleDbConnection();
                conn1.ConnectionString = @"Provider=VFPOLEDB.1;DATA Source=" + strExportPath + @"\"  +strExportFile + ";";
                string strSQL = "SELECT * FROM " + strExportFile;
                System.Data.OleDb.OleDbDataAdapter adp = new System.Data.OleDb.OleDbDataAdapter(strSQL, conn1);
                System.Data.DataTable dt1 = new DataTable();
                adp.Fill(dt1);

                //初始化进度条
                prgBar.Value = 0;
                prgBar.Maximum = dt.Rows.Count;



                //循环读取dt的数据添加到dt1,注意方法,还有一个就是null值的处理,具体要根据你的dbf库结构来设定。
                //我的dbf库主要就是两种字段,一种是字符型,一种是整型

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DataRow dr = dt1.NewRow();
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {


                        //下面这段代码我做点解释,对于dr[j]的赋值,首先判断dt.Rows[i][dt1.Colums[j].ColumnName.ToString()]的值是否为null,
                        //如果是null,则赋值为DBNull.Value;如果不是null,则插入原始值dt.Rows[i][dt1.Colums[j].ColumnName.ToString()]
                        //直接赋值null是不可以的,null主要用于对象类的数据,DataTable数据库中的null应该用DBNull.Value来代替
                        dr[j] = dt.Rows[i][dt1.Columns[j].ColumnName.ToString()] == null ? DBNull.Value : dt.Rows[i][dt1.Columns[j].ColumnName.ToString()];

                    }
                    dt1.Rows.Add(dr);
                    prgBar.Value++;
                }

                //初始化一个CommandBuilder,目的是使得adp的更新操作初始化
                System.Data.OleDb.OleDbCommandBuilder cmdBld = new System.Data.OleDb.OleDbCommandBuilder(adp);
                
                //更新dt1,系统自动将数据添加到dbf库中
                adp.Update(dt1);
            }

  • 相关阅读:
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第50章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第49章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第48章 读书笔记(待更新)
    Spring Boot 中使用 Quartz 实现任务调度
    实战 FastDFS Java 客户端上传文件
    分布式文件系统之 FastDFS
    Java 持久层框架之 MyBatis
    C语言实现贪吃蛇
    [转载]分享三篇非常好的学习心得
    selenium加载cookie报错问题:selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain
  • 原文地址:https://www.cnblogs.com/drsniper/p/1036957.html
Copyright © 2011-2022 走看看