C#/SQL Third of Programming memorandum


HOME > C#/SQL Third

Tableのコピー方法

2014年11月13日
15:45
SqlBulkCopyを用いたテーブルの一括コピー

rokkou2.jpg
private void button1_Click(object sender, EventArgs e)//BK_1に保存
{
  //待機状態
  Cursor.Current = Cursors.WaitCursor;

  //BK_1に保存のデータの消去
  string connectionStringBK_1 = @"Data Source=itmaps12\itmaps12;
            Initial Catalog=ConfulBK;Integrated Security=True;Pooling=False";
  using (SqlConnection sourceConnectionBK_1 = new SqlConnection
                                      (connectionStringBK_1))
  {
    sourceConnectionBK_1.Open();
    SqlCommand commandDeleteBK_1 = new SqlCommand("DELETE FROM
                                 BK_1;", sourceConnectionBK_1);
    //消去の実行 戻り値は処理行数
    int rowcount = commandDeleteBK_1.ExecuteNonQuery();
    //MessageBox.Show(rowcount.ToString() + "行を削除しました");
    sourceConnectionBK_1.Close();
  }
  //テーブルSheet1$からのデータのBK_1へのコピー
  string connectionStringSource = @"Data Source=itmaps12\itmaps12;Initial
                  Catalog=Conful;Integrated Security=True;Pooling=False";

  using (SqlConnection sourceConnectionSource = new SqlConnection
                                    (connectionStringSource))
  {
    sourceConnectionSource.Open();

    SqlCommand commandSourceCopy = new SqlCommand("SELECT * FROM
                             Sheet1$;", sourceConnectionSource);
    SqlDataReader reader = commandSourceCopy.ExecuteReader();

    //string connectionStringBK_1 = @"Data Source=itmaps12\itmaps12;Initial
                 Catalog=ConfulBK;Integrated Security=True;Pooling=False";

   using (SqlConnection sourceConnectionBK_1 = new SqlConnection
                                      (connectionStringBK_1))
   {
     sourceConnectionBK_1.Open();

     using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sourceConnectionBK_1))
     {
       bulkCopy.DestinationTableName = "BK_1";
       try
       {
         bulkCopy.WriteToServer(reader);
       }
         catch (Exception ex)
       {
         MessageBox.Show(ex.Message);
       }
       finally
       {
         reader.Close();
       }
     }
     sourceConnectionBK_1.Close();
   }

   sourceConnectionSource.Close();
 }

 //BK_Recへのバックアップの記録の保存
 //空の新規レコードをデータセットに作成
 DataRow anyRow = this.confulBKDataSet.BK_Rec.NewRow();
 anyRow[1] = DateTime.Now;//バックアップ日時 smaledatetime 1分精度
 anyRow[2] = masine_User;//作成者
 // anyRow[3] =

 this.confulBKDataSet.BK_Rec.Rows.Add(anyRow);
 //書込み
 this.Validate();
 this.bK_RecBindingSource.EndEdit();
 this.bK_RecTableAdapter.Update(this.confulBKDataSet);
 //元に戻す
 Cursor.Current = Cursors.Default;

}