用C#同步两张表(表中有自动增长列)

topglorylines 2010-11-15 02:43:25
我写了一个方法,用于同步两个不同环境的数据表(一个在本机,一个在PDA):
public void CopyTable(SqlConnection srcConnection, SqlCeConnection destConnection, string queryString, string tableName)
{
try
{
srcConnection.Open();
destConnection.Open();

SqlCommand srcCommand = srcConnection.CreateCommand();
srcCommand.CommandText = queryString;

SqlCeCommand destCommand = destConnection.CreateCommand();
destCommand.CommandType = CommandType.TableDirect;
destCommand.CommandText = tableName;


SqlDataReader srcReader = srcCommand.ExecuteReader();

SqlCeResultSet resultSet = destCommand.ExecuteResultSet(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();

lblMessage.Text = "表" + tableName + "数据下载成功!";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
srcConnection.Close();

destConnection.Close();
}
}

关键部分标红了,一个是取出源数据表的数据,一个是将这些数据写入目的表中。当表没有自动增长列时,此方法没问题;但是要是表中有自动增长列,那么queryString查询语句没有查自动增长列,写入时就会对错列而报错,如果查询语句中放入自动增长列,那就会报错自动增长列无法更改!
...全文
141 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcqpzq 2010-11-15
  • 打赏
  • 举报
回复
自增列同步很麻烦,因为自增列的数据不能改写和控制,是自动生成的。如果同步,建议还是不要用自增列
sprc_lcl 2010-11-15
  • 打赏
  • 举报
回复
插入sql语句如下:

SET IDENTITY_INSERT aaa on
insert into aaa(id,NN) values(15,'f')
SET IDENTITY_INSERT aaa off

可插自动增长ID

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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