C# - 数据备份-datatable数据写入到CSV文件中

今天是2016年6月7日,一个特殊的日子,2012年的今天我也在考场上奋笔疾书。大二那年,王老师曾经建议我们开通个博客记录一下你们的学习历程,但是那会没有领会老师的意思,觉得写博客没什么大不了的,而且一直说写,但是最后也没有开始。今天,是我上班的第二十天,其实从上班的第一天我就想着写博客,但是又不知从何写起。这二十天来,做了一些东西,在做的过程中,在网上找了好多资料,但是都不完整,所以,我就想着从今天开始记录一下我完成的功能,梳理一下自己的思路,提高一下自己的书写能力。


开发工具:Visual Studio 2012
数据库:access 2007


界面如下图所示

这里写图片描述
这个页面是由一个datagridview控件、四个button控件以及一个groupbox控件组成。datagridview控件是重点,用来编辑和显示数据。

整体流程:

  • 查询出数据库中的所有表名,并在datagridview中显示出来
  • 根据选择的表名查询表中的数据
  • 生成csv文件
  • 选择备份的路径
  • 备份数据

从数据库中查询出表名

我的Sql语句是这样写的:

SELECT name FROM MSysObjects WHERE  type=1  AND flags=0;

在查询表名的过程中,遇到了问题。这条sql语句在Access 2007中执行的结果是正确的。但是在Visual Studio 2012 中执行就遇到了问题,错误信息大概就是:没有相关权限。忘记截图了。只能去Access2007中中给当前用户设置权限。
基于上一个方法有点麻烦,我又找到了另一种方法:
OleDbConnection的GetSchema方法用来获取数据库的结构,所以也可以用它获取数据库中所有的表
但是,用getSchema()方法得到的数据库中TABLE_TYPE的类型有好多种:Table、view、system table、access table。我只用table,所以要使用dataview的rowfilter()方法过滤一下。


查询出表名以及对datatable进行过滤

        string ConnStr = ConfigurationManager.AppSettings["ConnectionString"]; 
        OleDbConnection Conn = new OleDbConnection(ConnStr);
        try
         {
             if (Conn.State == ConnectionState.Closed)
             {
             Conn.Open();
             }
             DataTable dt = Conn.GetSchema("Tables");
             DataView dv = dt.DefaultView;
             dv.RowFilter = "TABLE_TYPE = 'TABLE'";
             DataTable newdt = dv.ToTable();
         }
         catch(Exception e)
         {
          MessageBox.Show(e.ToString());
         }
         finally 
         { 
             if (Conn.State 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值