如何用代码更新c#中的数据表?

时间:2010-09-23 11:29:48

标签: c# sql

我想将数据从数据库移动到另一个数据库。

我写了2个功能。功能1:我将数据库1中的表填充到数据表中,并命名为DT

函数2中的

我用Dt填充database2中的表并命名为dtnull

我在数据库2中更新dtnull

function 2:
{
  SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand = new SqlCommand();
            sda.SelectCommand.Connection = objconn;
            sda.SelectCommand.CommandText = "Select * from " + TableName + "";
            DataTable dtnull = new DataTable();
            sda.Fill(dtnull);
            SqlCommandBuilder Builder = new SqlCommandBuilder();
            Builder.DataAdapter = sda;
            Builder.ConflictOption = ConflictOption.OverwriteChanges;
            string insertCommandSql = Builder.GetInsertCommand(true).CommandText;
            foreach (DataRow Row in Dt.Rows)
            {
                dtnull.ImportRow(Row);

            }
           sda.Fill(dtnull);
           sda.Update(dtnull);
}

4 个答案:

答案 0 :(得分:0)

如果您需要复制SQL数据库,则只需备份并恢复。或者使用DTS服务。

答案 1 :(得分:0)

如果只是几张桌子,我认为你可以

  1. 右键单击SQL Management Studio中所需的表
  2. 为剪贴板生成创建脚本
  3. 执行它
  4. 返回原始表并选择所有行
  5. 复制它们
  6. 转到新表并粘贴
  7. 不需要让它变得更难。

答案 2 :(得分:0)

您真的不需要为此使用更新。您可以试用这个解决方案,这可能是您执行此操作的最简单方法。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx

如果你想要一个LINQ解决方案,我可以为你提供一个。

答案 3 :(得分:0)

还有很多原因尚无法解释。例如,源表和目标表是否具有相同的列结构?

你能看到来自同一个SqlConnection的两个数据库(即它们是否在同一台机器上)?如果是这样,您可以在一个SQL语句中完成所有操作。假设您要将数据库DB1中的表T1中的数据复制到数据库DB2中的表T2,您将编写

从DB1.dbo.T1

插入DB2.dbo.T2 select *

使用ExecuteNonQuery执行。

如果数据库需要不同的SqlConnections,我会使用SqlDataReader从源读取数据并逐行更新目标。我认为它比使用SqlDataAdapter和DataTable更快,因为它们需要更多的结构和内存。 Update命令在任何情况下逐行写入数据。