用C#同步两张表(表中有自动增长列)
我写了一个方法,用于同步两个不同环境的数据表(一个在本机,一个在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查询语句没有查自动增长列,写入时就会对错列而报错,如果查询语句中放入自动增长列,那就会报错自动增长列无法更改!