首页 新闻 赞助 找找看

江湖救急!sqlserver 数据导出到Access引发的问题,百思不得其姐。

0
悬赏园豆:5 [已解决问题] 解决于 2016-03-08 11:54

小弟先把sqlserver 数据 通过 Sqlhelper 帮助类 放到DataTable中(下面代码的dt就是我的数据)这步没有问题。

 var ds = SqlHelper.ExecuteDataSet(DataConnect, CommandType.Text,   strbuding.ToString(), sqlparm.ToArray());    
  DataTable dt = ds.Tables[0];

然后小弟在导出到Access中发给客户(因为数据量很大 百万级别 所以选择导出Access中)下面就是小弟的代码

   using (OleDbConnection con = new OleDbConnection(_connectionStr))
           {
               OleDbDataAdapter adapt = new OleDbDataAdapter("select * from table1", con);
                  OleDbCommandBuilder builder = new    OleDbCommandBuilder(adapt);
               builder.QuotePrefix = "[";
               builder.QuoteSuffix = "]";
               adapt.Update(dt);
            }

Access 数据库是生成好的 dt 里面的列和Access 表名都能对上 没有问题 ,可是上面的代码就是无法导出数据,更加奇怪的是程序没有报错,正常运行,后来我手动创建了一个DataTable 执行上面的代码成功导入.

           DataTable dt2 = new DataTable();
            dt2.Columns.Add("ID", System.Type.GetType("System.Int32"));
            dt2.Columns.Add("", System.Type.GetType("System.Int32"));

            DataRow dr = dt2.NewRow();
            dr[""] = "2014";
            dr["ID"] = "12312312";
            dt2.Rows.Add(dr);
      using (OleDbConnection con = new OleDbConnection(_connectionStr))
           {
               OleDbDataAdapter adapt = new OleDbDataAdapter("select *  from table1", con);
               OleDbCommandBuilder builder = new OleDbCommandBuilder(adapt);
               builder.QuotePrefix = "[";
               builder.QuoteSuffix = "]";
              adapt.Update(dt2 );
            }

很奇怪啊  为何 sqlhelper返回DT 就无法导出呢,谁能解释一下吗?

请求的主页 请求 | 初学一级 | 园豆:2
提问于:2016-01-11 17:05
< >
分享
最佳答案
0

建议试试把数据分页导入,不要一次性全部查询出来。

收获园豆:5
I,Robot | 大侠五级 |园豆:9783 | 2016-01-11 17:30

是的 我这个已经是分批导入了 跟数据条数没关系 我导入2行数据也不行

请求 | 园豆:2 (初学一级) | 2016-01-11 17:32
其他回答(2)
0

你的看错误提示哇...

幻天芒 | 园豆:37175 (高人七级) | 2016-01-11 17:07

没有错误发生真的

支持(0) 反对(0) 请求 | 园豆:2 (初学一级) | 2016-01-11 17:10

@请求: 没有错误,就单独调试,看看那一步出问题了。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2016-01-11 20:42
0

最后在网上找到了资料问题解决了,adapt.Update()在进行更新的时候 会检查你Datatable 中行的状态 ,解决办法就是循环Dt中的行 设置 DR.SetAdded()。具体我也不太理解 你们自己查看 DataRow 状态说明吧。

请求 | 园豆:2 (初学一级) | 2016-01-12 09:51

赞一个,回复解决办法才是王道,少侠好武功。

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2016-01-12 16:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册