数据库提取操作问题

麦田追风 2008-11-23 11:09:38
小弟学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);
}
}
...全文
111 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
怎么不用存储过程实现?
用 forall 一次性插入
zzyzgydotnet 2009-05-10
  • 打赏
  • 举报
回复
索引
netwar 2009-01-14
  • 打赏
  • 举报
回复
将需要进行条件搜索字段加上索引。。
leonwan 2009-01-13
  • 打赏
  • 举报
回复
支持
jlj84237485 2008-12-25
  • 打赏
  • 举报
回复
来看看
sunray_001 2008-12-25
  • 打赏
  • 举报
回复
来看看……
feifeiyiwen 2008-12-23
  • 打赏
  • 举报
回复
楼主很强吗?先收藏下!
xjlqlqlq 2008-12-05
  • 打赏
  • 举报
回复
五十万记录,不小啊,不会太快的,关闭事务和日志会快点

8,028

社区成员

发帖
与我相关
我的任务
社区描述
高性能数据库开发
社区管理员
  • 高性能数据库开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧