Скопируйте содержимое таблицы в другую таблицу в той же базе данных с помощью C # - PullRequest
1 голос
/ 20 сентября 2011

Копировать содержимое таблицы в другую таблицу в той же базе данных с помощью C #.

Я получил одну базу данных (Baza) с некоторыми данными в двух таблицах NEW и OLD. Мне нужно периодически перемещать НОВЫЕ данные в таблицу данных СТАРЫХ (после некоторого измерения). Мне нужно сравнить эти данные на следующем шаге.

Я использую SQL Server CE с файлом Baza.sdf. Любым изощренным способом скопировать таблицу в таблицу сделать это (какой-то цикл делает это автоматически)?

Спасибо

Ответы [ 3 ]

1 голос
/ 23 сентября 2011

Я решил это следующим образом: программа читает в таблице циклов НОВЫЙ ряд за строкой, и каждое значение изменяется на параметр.Я получил 8 столбцов, так что 8 параметров (7 целых и одна строка) Далее каждый из параметров вставляется в старую таблицу.Результат также отображается в textBox1:

    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();
0 голосов
/ 20 сентября 2011

Добавление к тому, что заявлено CodeCaster,

Поместите его код в хранимую процедуру и создайте задание для запуска с заданным интервалом по вашему выбору. Вы можете добавить логику к хранимой процедуре, чтобы также проверить достоверность данных и настроить ее на уведомление о неправильности данных. Можно привести примеры, если вы включите в свой вопрос более конкретную информацию.

0 голосов
/ 20 сентября 2011

Что не так с:

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

? : -)

Поскольку это не поддерживается в CE, благодаря @marc_s вы можете получить записи из таблицы NEW, используя select, затем insert их в таблицу OLD, а затем выполнить цикл по начальному набору записей например, удалить строки из NEW по идентификатору.

...