欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

数据库提取操作有关问题

更新时间: 2014-01-05 02:30:53 责任编辑: Author_N1

 

数据库提取操作问题
小弟学PDA开发,现在要复制数据表,我的数据表中有50多万调记录,要将以数据库表中间符合某条件的提取出来放到另一数据库的表中。我写了段代码,这代码要等半天才复制完。 
请问高人怎么样可以让数据处理快一点啊~~~~? 
下面是我写的代码: 

public static void CopyTable(SqlCeConnection srcConnection,SqlCeConnection destConnection, 
  string queryString,string destTableName) 
  { 
  SqlCeCommand srcCommand = srcConnection.CreateCommand(); 
  srcCommand.CommandText = queryString;//这参数是查询语句(select * from 数据源表名 where 条件) 

  SqlCeCommand destCommand = destConnection.CreateCommand(); 
  destCommand.CommandText = @"Delete from " + destTableName; 
  destCommand.ExecuteNonQuery(); 

  destCommand.CommandType = CommandType.TableDirect; //基于表的访问,性能更好 
  destCommand.CommandText = destTableName;//这是目的数据库表名 
  try 
  { 
  SqlCeDataReader srcReader = srcCommand.ExecuteReader(); 

  SqlCeResultSet resultSet = destCommand.ExecuteResultSet( 
  ResultSetOptions.Sensitive | //检测对数据源所做的更改 
  ResultSetOptions.Scrollable | //可以向前或向后滚动 
  ResultSetOptions.Updatable); //允许更新数据 

  object[] values; 
  SqlCeUpdatableRecord record; 
  while (srcReader.Read()) 
  { 
  // 从源数据库表读取记录 
  values = new object[srcReader.FieldCount]; 
  srcReader.GetValues(values); 

  // 把记录写入到目标数据库表 
  record = resultSet.CreateRecord(); 
  record.SetValues(values); 
  resultSet.Insert(record); 
  } 

  srcReader.Close(); 
  resultSet.Close(); 
  } 
  catch (Exception ex) 
  { 
  MessageBox.Show(ex.Message); 
  } 
  }

--参考方法--
五十万记录,不小啊,不会太快的,关闭事务和日志会快点

--参考方法--
楼主很强吗?先收藏下!
--参考方法--
来看看……
--参考方法--
来看看
--参考方法--
支持
--参考方法--
将需要进行条件搜索字段加上索引。。
--参考方法--
索引
--参考方法--
怎么不用存储过程实现?
用 forall 一次性插入
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:30:53
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/10758/
本文WWW.DOC100.NET DOC100.NET版权所有。