Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C将表内容复制到同一数据库中的另一个表_C#_Sql Server Ce - Fatal编程技术网

C# 使用C将表内容复制到同一数据库中的另一个表

C# 使用C将表内容复制到同一数据库中的另一个表,c#,sql-server-ce,C#,Sql Server Ce,使用C将表内容复制到同一数据库中的另一个表中 我得到了一个数据库Baza,其中包含两个新表和旧表中的一些数据。在我进行一些测量之后,我需要定期将新数据移动到旧数据表中。我需要在下一步比较这些数据 我正在使用SQLServerCE.sdf文件。以任何复杂的方式将表复制到表,并自动执行一些循环 谢谢有什么问题吗: insert into [table] (field1, field2) select field1, field2 from [table2] where (your cond

使用C将表内容复制到同一数据库中的另一个表中

我得到了一个数据库Baza,其中包含两个新表和旧表中的一些数据。在我进行一些测量之后,我需要定期将新数据移动到旧数据表中。我需要在下一步比较这些数据

我正在使用SQLServerCE.sdf文件。以任何复杂的方式将表复制到表,并自动执行一些循环

谢谢

有什么问题吗:

insert into [table] (field1, field2) 
    select field1, field2 from [table2] where (your conditions are met)
?:-


由于CE不支持这一点,感谢@marc_s,您可以使用select从新表中获取记录,然后将其插入旧表,然后循环通过初始记录集从新的by ID中删除行,例如。

添加到CodeCaster声明中

将他的代码放入storedprocedure中,并创建一个作业,按照您选择的设置间隔运行。 您可以向StoredProcess添加逻辑,以检查数据的有效性,并将其设置为在数据不正确时通知您。如果您在问题中包含更具体的信息,则可以给出示例

我是这样解决的: 程序逐行读取循环表中的新值,每个值都会更改为参数。我有8列,8个参数,7个整数和一个字符串 接下来,每个参数都被插入到旧表中。 结果也显示在文本框1中:

    SqlCeConnection conn = new SqlCeConnection("Data Source = \\Program Files\\My         Program\\Program.sdf; Password ='mypassword'");
    conn.Open();
    try
      {
      SqlCeCommand cmd = new SqlCeCommand("SELECT * FROM [NEW]", conn);
      SqlCeDataReader rdr = cmd.ExecuteReader();
      cmd.Connection = conn;
      cmd.ExecuteNonQuery();
          while (rdr.Read())
          {
          int param1 = rdr.GetInt32(0);
          int param2 = rdr.GetInt32(1);
          int param3 = rdr.GetInt32(2);
          int param4 = rdr.GetInt32(3);
          int param5 = rdr.GetInt32(4);
          int param6 = rdr.GetInt32(5);
          int param7 = rdr.GetInt32(6);
          string param8 = rdr.GetString(7);
          textBox1.AppendText(" " + param1 + " " + param2 + " " + param3 + " " + param4 + " " + param5 + " " + param6 + " " + param7 + " " + param8);
          textBox1.AppendText(System.Environment.NewLine);
          SqlCeCommand ins = new SqlCeCommand("insert into [OLD] values ('" + param1 + "','" + param2 + "','" + param3 + "','" + param4 + "','" + param5 + "','" + param6 + "','" + param7 + "','" + param8 + "');");
          ins.Connection = conn;              
          ins.ExecuteNonQuery();
          }
      }
     catch (Exception msg)
      {
     MessageBox.Show(msg.ToString());
      }
      conn.Close();

我做了:私有无效检查\u Clickobject sender,EventArgs e{SqlCeConnection conn=new SqlCeConnectionData Source=\\Program Files\\MyProgram\\Baza.sdf;Password='Password';conn.Open;尝试将{SqlCeCommand cmd=new SqlCeCommandinsert插入[3GOLD]ID,X1,X2,X3从[3G]选择ID,X1,X2,X3];cmd.Connection=conn;cmd.ExecuteNonQuery;}catch Exception msg{MessageBox.Showmsg.ToString;}conn.Close;}但是:我遇到了一个错误:解析查询时出错。[令牌行号=1,令牌行偏移量=137,令牌出错=]再次强调:我认为OP使用SQL Server Compact Edition很重要,我认为它不支持这样的东西……我认为SQL Server Compact Edition不支持存储过程。。。如果您可以使用一个单独的实用程序而不是C代码,那么您应该检查它,它允许您将数据导出为插入脚本,然后您可以针对您的目标运行该脚本database@marc_s,它是关于同一数据库中的两个表,在我看来,您的解决方案有点过分了。