新手上路之DBF文件的读取

初次了解DBF文件,因为有需求要将其中的数据导出,并插入到数据库中。开始的时候用Excel把它打开了,以为它就是一个Excel文件,就想着用NPOI来实现,显然是作为一个新人太天真了,后来在别人的博客上了解到,读取这个文件有多种方式,根据不同的难易用不同的方法,由于我所接触的这个文件中没有过多的约束,我也就用了最简单的一种。

 /// <summary>
        /// 读取DBF文件,此方法适用于简单的DBF文件,即类似深交所的文件
        /// </summary>
        /// <param name="path">要读取的文件所在的路径</param>
        /// <param name="OleDbName">要读取文件的名称</param>
        /// <returns></returns>
        public static DataSet ReadDBF(string path, string OleDbName)
        {
            
            string strConn = @"Provider=vfpoledb;Data Source=" + path + ";Collating Sequence=machine;";
            using (OleDbConnection myConnection = new OleDbConnection(strConn))
            {
                OleDbDataAdapter adpt = new OleDbDataAdapter("select * from " + OleDbName, myConnection);
                DataSet mySet = new DataSet();
                adpt.Fill(mySet);
                myConnection.Close();
                return mySet;
            }
        } 
View Code

将DBF文件读取出来后存在了DataSet中,接下来就是要将值插入到数据库中,由于本人的能力有限,要插入的数据库是事先已经写好的结构,之后直接插入的。这个方法主要的功能就是进行字符串的拼接

        /// <summary>
        /// 给要插入数据库的字段赋值,返回的是sql语句
        /// </summary>
        /// <param name="data">从DBF中取出来存在DataSet中的数据</param>
        /// <param name="tableName">要插入的数据库的表明</param>
        /// <param name="name">定义数据表中,除了自动生成的GUId外还有多少个字段</param>
        /// <returns>拼接好的sql语句</returns>
        public static string SetValue(DataSet data, string tableName, params string[] name)
        {
           
            int count = data.Tables[0].Columns.Count;
            string sql = null;
            int number = 0;
            foreach (DataRow item in data.Tables[0].Rows)
            {
              //表中的主键是用GUID生成的
                string guid = Guid.NewGuid().ToString();
                string value = "'"+guid+"'" + ",";
                for (int i = 0; i < count; i++)
                {
                    if (i == count- 1)
                    {
                        name[i] = "'" + item[i].ToString() + "'";
                        number++;
                    }
                    else
                    {
                        name[i] = "'" + item[i].ToString() + "'" + ",";
                        number++;
                    }
                    value += name[i];

                }//for
                string newsql = "insert into " +" "+ tableName + " "+"values(" + value + ")";
                sql += newsql;
            }//foreach
            return sql;
        }             
View Code

最后也就是最简单的向数据库中插值了

 /// <summary>
        /// 执行sql语句,向数据库中插值
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <returns></returns>
        public static int YExecuteNonquer(string sql)
        {
            string ConnectionString = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
            using (SqlConnection conn = new SqlConnection(ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    return cmd.ExecuteNonQuery();
                }
            }
        } 
View Code

这样一个简单的将DBF文件读取出来并插入到数据库中的操作就完成了。

 

转载于:https://www.cnblogs.com/rui-yang/p/4166134.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值