OLEDB访问CSV、txt

最近在研究数据导入功能,发现Excel文件有点大,在有大小限制的情况下上传的数据要远远少于CSV文件。CSV文件据我所了解其本质跟txt文件没多大区别(这点没有深入了解,呵呵,欢迎各位来指教),但是可以用Excel工具来打开,编辑起来比较方便。而且其默认打开方式就是Excel,当然这是在装了office excel的情况下。

说CSV跟txt一样,可以看看我们在程序里对其的访问方式,一是通过流的方式来读取,二是以数据库的方式来读取。

  以文本流的方式来读取无格式的内容,这是毋庸置疑的。但是我们这里现在讲的是有格式的内容,如果还用文本流的方式来读取就有点麻烦了。

  访问内容有格式的CSV和txt文件,当然还是通过使用文本驱动来得比较方便了,但是还有个限制,那就是只能select和insert,而不能对记录做其他的操作,在本章最后面附有各种驱动对于记录的访问权限,感兴趣的朋友可以去看看。

  格式,这是很重要的一点,一定要有合法的格式,字段与字段之间要以逗号隔开,第一行记录为列名称,如下:

      姓名,年龄,性别
      "张三",13,男
      "李四",14,女
      "王五",15,男
      "赵六",16,女
      "卓七",17,女
      "凌老大",11,"男"

下面附上我的代码

#region OLEDB访问CSV、txt
    /// <summary>
    /// 文本驱动
    /// </summary>
    string ConnStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Text;'";
    /// <summary>
    /// 查询CSV文件记录
    /// </summary>
    /// <param name="directory">目录</param>
    /// <param name="fileName">文件名(带后缀)</param>
    /// <param name="tj">查询条件(例如:"WHERE 姓名 = '凌老大'",如无条件则为null)</param>
    /// <returns></returns>
    public DataSet SelectCSV(string directory, string fileName, string tj)
    {
        DataSet ds = new DataSet();

        OleDbDataAdapter adapter = new OleDbDataAdapter(string.Format("select * from [{0}] " + (tj != null ? tj : ""), fileName), string.Format(ConnStr, directory));
        adapter.Fill(ds);
        return ds;
    }
    /// <summary>
    /// 给CSV文件添加记录
    /// </summary>
    /// <param name="directory">目录</param>
    /// <param name="fileName">文件名(带后缀)</param>
    /// <param name="values">添加记录值(例如"'凌老大',20,'男'")</param>
    /// <returns></returns>
    public int InsertCSV(string directory, string fileName, string values)
    {
        int row = 0;
        using (OleDbConnection conn = new OleDbConnection(string.Format(ConnStr, directory)))
        {
            conn.Open();
            string sql = "INSERT INTO [{0}] VALUES({1})";
            OleDbCommand comm = new OleDbCommand(string.Format(sql, fileName, values), conn);
            row = comm.ExecuteNonQuery();
        }
        return row;
    }
    #endregion

 


Provider  SELECT  INSERT  UPDATE  DELETE   
SQLOLEDB    Y         Y          Y          Y   
Jet/Access         Y            Y            Y          Y   
Jet/Excel           Y            Y            Y          N   
Jet/Text            Y            Y         N          N   
Jet/Lotus          Y            Y         Y          N   
Jet/HTML          Y            N         N          N   
Jet/dBase         Y            Y         Y          Y   
Jet/Paradox      Y            Y         Y          Y

转载于:https://www.cnblogs.com/kongling/archive/2010/06/27/1766064.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值