码迷,mamicode.com
首页 > 数据库 > 详细

新手上路之DBF文件的读取

时间:2014-12-16 00:48:12      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   for   

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

bubuko.com,布布扣
 /// <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中,接下来就是要将值插入到数据库中,由于本人的能力有限,要插入的数据库是事先已经写好的结构,之后直接插入的。这个方法主要的功能就是进行字符串的拼接

bubuko.com,布布扣
        /// <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

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

bubuko.com,布布扣
 /// <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文件读取出来并插入到数据库中的操作就完成了。

 

新手上路之DBF文件的读取

标签:style   blog   http   io   ar   color   os   sp   for   

原文地址:http://www.cnblogs.com/rui-yang/p/4166134.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!