C#/SQL Fourth of Programming memorandum


HOME > C#/SQL Fourth

Tableのコピー方法

2014年11月13日
15:42
BackUpルーチン全体

rokkou3.jpg
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;//追加

namespace PC_Con
{
  public partial class BackUp : Form
  {
      //変数設定
      private string masine_User = "";//マシン名+ユーザーID

      public BackUp()
      {
          InitializeComponent();
      }
      private string _ID;
      public string ID2
      {
          get
          {
              return _ID;
          }
          set
          {
              _ID = value;
          }
      }
      private void sheet1_BindingNavigatorSaveItem_Click(object sender, EventArgs e)//ボタンがないので死んでいる
      {
          this.Validate();
          this.sheet1_BindingSource.EndEdit();
          this.tableAdapterManager.UpdateAll(this.confulDataSet);
      }

      private void BackUp_Load(object sender, EventArgs e)
      {
          /*
          FormSplash fs = new FormSplash();
// fs.StartPosition = FormStartPosition.CenterParent;//すべてセンタースクリーンとした 画面が狭い時どうなるのか??
          fs.Show();
          fs.Refresh();
          */
// TODO: このコード行はデータを 'confulBKDataSet.BK_Rec2' テーブルに読み込みます。必要に応じて移動、または削除をしてください。
          this.bK_Rec2TableAdapter.Fill(this.confulBKDataSet.BK_Rec2);
// TODO: このコード行はデータを 'confulBKDataSet.BK_Rec' テーブルに読み込みます。必要に応じて移動、または削除をしてください。
          this.bK_RecTableAdapter.Fill(this.confulBKDataSet.BK_Rec);
          /*
// TODO: このコード行はデータを 'confulBKDataSet.BK_2' テーブルに読み込みます。必要に応じて移動、または削除をしてください。
          this.bK_2TableAdapter.Fill(this.confulBKDataSet.BK_2);
// TODO: このコード行はデータを 'confulBKDataSet.BK_1' テーブルに読み込みます。必要に応じて移動、または削除をしてください。
          this.bK_1TableAdapter.Fill(this.confulBKDataSet.BK_1);
// TODO: このコード行はデータを 'confulDataSet._Sheet1_' テーブルに読み込みます。必要に応じて移動、または削除をしてください。
          this.sheet1_TableAdapter.Fill(this.confulDataSet._Sheet1_);
          //
          fs.Close();
           */
          // マシン名をとってくる ユーザー名が欲しい
          string machine = Environment.MachineName;
          string user = Environment.UserName;
          string user_ID = ID2;

          //ユーザー名を表示
          toolStripTextBox1.Text = machine + " : " + user;
          masine_User = machine + " : " + user+" : "+user_ID;
          //最初はすべて触れない
          textBox1.Enabled = false;
          button1.Enabled = false;
          textBox2.Enabled = false;
          button2.Enabled = false;
          button3.Enabled = false;
          button4.Enabled = false;

          //MessageBox.Show(record_No.ToString());
          //キーイベントをフォームで受け取る
          this.KeyPreview = true;
          //KeyDownイベントハンドラを追加
          this.KeyDown += new KeyEventHandler(BackUp_KeyDown);

      }
      /// <summary>
      /// キーイベント リターンキーの扱い
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      private void BackUp_KeyDown(object sender, KeyEventArgs e)//レコード番号表示での直接入力でリターンキーを押すと即入力でValidatedイベント発生
      {
          //Enterキーが押されているか確認 6/24 1回限りしか効かないのではないか?マルチラインのテキストボックスで実験した
          if (e.KeyCode == Keys.Enter)
          {
              //データグリッドの時は、何もしない<--上手く動作した
              if (this.ActiveControl is DataGridView)
                  return;
              //複数行テキストボックスの時は、何もしない
              if (this.ActiveControl is TextBox)
              {
                  TextBox tb = (TextBox)this.ActiveControl;
                  if (tb.Multiline && (tb.AcceptsReturn || e.Control))
                      return;
              }
              //リッチテキストボックスの時は、何もしない
              if (this.ActiveControl is RichTextBox && e.Control)
                  return;
              //あたかもTabキーが押されたかのようにする
              //Shiftが押されているときは、前のコントロールのフォーカスを移動
              this.ProcessTabKey(!e.Shift);

              e.Handled = true;
          }
      }

/****
      private void button1_Click(object sender, EventArgs e)//BK_1に保存
      {
          /*
          //これは正しく動作してグリッドビューにデータが表示された
          DataTable dt = new DataTable();
          dt = this.confulDataSet._Sheet1_.Copy();//これは成立
          //先にフォームにツールボックスからDataGridViewをD&D
          //フォームにツールボックスからBindingSouraceをD&Dして
          bindingSource1.DataSource = dt;
          dataGridView1.DataSource = bindingSource1;
          */
 /*
          MessageBox.Show("今からclear:" + this.confulBKDataSet.BK_1.Count.ToString());//13072で正解

          if (this.confulBKDataSet.BK_1.Count > 0)
          {
              //this.bK_1BindingSource.Clear();
              for (int i = 0; i < this.confulBKDataSet.BK_1.Count; i++)//
              {
                  this.confulBKDataSet.BK_1.Rows[i].Delete();
              }
          }
     // this.confulBKDataSet.BK_1.AcceptChanges();
     //データテーブルから物理的に消去の必要があるかと思ったが、消えていない
    //ここではエラーにならないが、最後の書き込みはID重複でエラーになる

          this.Validate();
          this.bK_1BindingSource.EndEdit();
          this.bK_1TableAdapter.Update(this.confulBKDataSet.BK_1); 
          /*
          this.bK_1BindingSource.DataSource = this.confulDataSet._Sheet1_.Copy();
          /// bK_1BindingSource.DataSource = this.confulDataSet._Sheet1_.Copy();
          ///dataGridView1.DataSource = bK_1BindingSource;
          dataGridView1.DataSource = this.bK_1BindingSource.DataSource;
          ///bK_1TableAdapter.Update(confulBKDataSet.BK_1);

          this.Validate();
          this.bK_1BindingSource.EndEdit();
          ///this.tableAdapterManager1.UpdateAll(this.confulBKDataSet);これでは保存されない
          ///考えてみればどのデータもアップデートされていないのでstatus がunchengedか<========
          this.bK_1TableAdapter.Update(this.confulBKDataSet.BK_1);
          */
    /*
          MessageBox.Show("clear:"+this.confulBKDataSet.BK_1.Count.ToString());//0
            /*
          for (int i = 0; i < this.confulDataSet._Sheet1_.Count; i++)//
          {
              this.confulBKDataSet.BK_1.LoadDataRow(this.confulDataSet._Sheet1_.Rows[i].ItemArray, false);
          }
            */
    /*
          for (int i = 0; i < this.confulDataSet._Sheet1_.Count; i++)//テーブル内の行の数だけループ
          {
              DataRow newRow = this.confulBKDataSet.BK_1.NewRow();
              for (Int32 index = 0; index < this.confulDataSet._Sheet1_.Rows[i].ItemArray.Length; index++)
              {
                  newRow[index] = this.confulDataSet._Sheet1_.Rows[i].ItemArray[index];

                  //this.confulBKDataSet.BK_1.Rows[i]. = this.confulDataSet._Sheet1_.Rows[i].ItemArray;
              }
              this.confulBKDataSet.BK_1.Rows.Add(newRow);
          }
          dataGridView1.DataSource = this.confulBKDataSet.BK_1;//ここまでは正常に作動

          MessageBox.Show("保存します");
          this.Validate();
          this.bK_1BindingSource.EndEdit();
          this.bK_1TableAdapter.Update(this.confulBKDataSet.BK_1); //ここで必ず重複エラー



      }

      private void button2_Click(object sender, EventArgs e)//BK_2に保存
      {
          DateTime start = DateTime.Now;
          if (this.confulBKDataSet.BK_2.Count > 0)
          {             
               // this.confulBKDataSet.BK_2.Clear();//物理テーブルには影響を及ぼせないコマンド? メモリー中だけ? クリアー後のテーブルの保存ができない
              //  for (int i = 0; i < this.confulBKDataSet.BK_2.Count; i++)//500行/分のスピード 40~45分で処理は正しく終了していた
              {
              //    this.confulBKDataSet.BK_2.Rows[i].Delete();
                //最初のルーチンで行くしかない? 
              }
              this.bK_2TableAdapter.DeleteQueryAllBK2();//主キー2が重複と出る11/4 しかしテーブルを見るとクリアされている
              //コレクションが変更されるので、繰り返し文ではRemoveは使用不可のエラーになる
              //  Remove  メソッドが DataRowCollection から DataRow を削除するのに対し、Delete メソッドは削除対象の行をマークするだけです。  MSDN
                /*
              foreach (DataRow row in this.confulBKDataSet.BK_2.Rows)
              {
                  this.confulBKDataSet.BK_2.Rows.Remove(row);
              }*/
  /*          }
            /*
          this.Validate();//重複書き込みになるので一度クリアを確定してみる 効果無し、を確認11/4
          this.bK_2BindingSource.EndEdit();
          this.bK_2TableAdapter.Update(this.confulBKDataSet.BK_2); //これでもキー2が重複といわれる
  */
    /*
          this.confulBKDataSet.BK_2.Clear();//ここで役に立つのでは?<==その通りでエラー解消
          foreach (DataRow row in this.confulDataSet._Sheet1_.Rows)
          {
              row.SetAdded();//Statusの変更
              this.confulBKDataSet.BK_2.ImportRow(row);//ここで重複エラー つまり、BK_2(物理デバイスは)は空になっているので、メモリが空になっていない
          }
          //MessageBox.Show(confulBKDataSet.BK_2.Rows.Count.ToString());//13000行を瞬間にコピーしている 保存ができていない
          DateTime mid = DateTime.Now;
          MessageBox.Show(start.ToLocalTime() + "<=start mid=>" + mid.ToLocalTime());
          this.Validate();
          this.bK_2BindingSource.EndEdit();
          this.bK_2TableAdapter.Update(this.confulBKDataSet.BK_2); //16分で正しく書き込み終了
          DateTime last = DateTime.Now;
          MessageBox.Show((mid - start).ToString()+"::"+(last-start).ToString()+"start"+start.ToLocalTime()+"last"+last.ToLocalTime());
      }
****/
      private void button3_Click(object sender, EventArgs e)//BK_1から復元
      {
          //待機状態
          Cursor.Current = Cursors.WaitCursor;

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

          string connectionStringSource = @"Data Source=itmaps12\itmaps12;Initial Catalog=ConfulBK;Integrated Security=True;Pooling=False";
          using (SqlConnection sourceConnectionSource = new SqlConnection(connectionStringSource))
          {
              sourceConnectionSource.Open();

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

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

              using (SqlConnection sourceConnectionSheet = new SqlConnection(connectionStringSheet))
              {
                  sourceConnectionSheet.Open();

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

              sourceConnectionSource.Close();
          }

          //BK_Recへのバックアップの記録の保存
          //最終行の読込と変更
          int rowLastNo = confulBKDataSet.BK_Rec.Rows.Count;//データセット内のテーブルのレコード数を数える

          DataRow anyRow = this.confulBKDataSet.BK_Rec.Rows[rowLastNo-1];
          anyRow[5] = DateTime.Now;//バックアップ日時 smaledatetime 1分精度
          anyRow[4] = masine_User;//作成者
          anyRow[3] = "リストア";

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

      }

      private void button4_Click(object sender, EventArgs e)//BK_2から復元
      {
          //待機状態
          Cursor.Current = Cursors.WaitCursor;

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

          string connectionStringSource = @"Data Source=itmaps12\itmaps12;Initial Catalog=ConfulBK;Integrated Security=True;Pooling=False";
          using (SqlConnection sourceConnectionSource = new SqlConnection(connectionStringSource))
          {
              sourceConnectionSource.Open();

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

              using (SqlConnection sourceConnectionSheet = new SqlConnection(connectionStringSheet))
              {
                  sourceConnectionSheet.Open();

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

              sourceConnectionSource.Close();
          }

          //BK_Recへのバックアップの記録の保存
          //最終行の読込と変更
          int rowLastNo = confulBKDataSet.BK_Rec2.Rows.Count;//データセット内のテーブルのレコード数を数える

          DataRow anyRow = this.confulBKDataSet.BK_Rec2.Rows[rowLastNo - 1];
          anyRow[5] = DateTime.Now;//バックアップ日時 smaledatetime 1分精度
          anyRow[4] = masine_User;//作成者
          anyRow[3] = "リストア";

          //書込み
          this.Validate();
          this.bK_Rec2BindingSource.EndEdit();
          this.bK_Rec2TableAdapter.Update(anyRow);
          //元に戻す
          Cursor.Current = Cursors.Default;

      }

      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;

      }

      private void button2_Click(object sender, EventArgs e)//BK_2に保存
      {
          //待機状態
          Cursor.Current = Cursors.WaitCursor;
          //BK_2に保存のデータの消去
          string connectionStringBK_2 = @"Data Source=itmaps12\itmaps12;Initial Catalog=ConfulBK;Integrated Security=True;Pooling=False";
          using (SqlConnection sourceConnectionBK_2 = new SqlConnection(connectionStringBK_2))
          {
              sourceConnectionBK_2.Open();
              SqlCommand commandDeleteBK_2 = new SqlCommand("DELETE FROM BK_2;", sourceConnectionBK_2);
              //消去の実行 戻り値は処理行数
              int rowcount = commandDeleteBK_2.ExecuteNonQuery();
              //MessageBox.Show(rowcount.ToString() + "行を削除しました");
              sourceConnectionBK_2.Close();
          }
          //テーブルSheet1$からのデータのBK_2へのコピー
          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_2 = new SqlConnection(connectionStringBK_2))
              {
                  sourceConnectionBK_2.Open();

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

              sourceConnectionSource.Close();
          }

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

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

      }

      private void textBox4_Validating(object sender, CancelEventArgs e)//Password変更の場合
      {
          //MessageBox.Show("バリデート発生");
          List<string> ID_List = new List<string> { "a001:aE7x9zuh", "a002:e4WhvcXd", "a003:Ps3cNv2e", "a004:3456","nishimura:Wc7ZfPMF","soma:yD623CBJ"
            ,"arita:Ca4Qcm6P","nomura:wR23yczB","nishio:iM7vqeaU","hamazaki:a3QvPXT4","s.soma:kZ8BzD5i","tsuji:Ak6zxSJ4"};
          if (ID_List.Contains(ID2 + ":" + textBox4.Text))
          {
              textBox4.Text = "ユーザーのIDと変更パスワードはOKです:";
              //保存記録(BK_Rec,BK_Rec2)の状況を調べる
              int rowLastNo = confulBKDataSet.BK_Rec.Rows.Count;//データセット内のテーブルのレコード数を数える
              int rowLastNo2 = confulBKDataSet.BK_Rec2.Rows.Count;//

              DateTime strDate;
              DateTime strDate2;
              if (rowLastNo == 0)//BKが存在しない場合はボタンをエネーブルとする
              {
                  textBox2.Enabled = false;
                  button2.Enabled = false;
                  button1.Enabled = true;
                  textBox1.Text = "一度もバックアップされていません";
                  textBox2.Text = "一度もバックアップされていません";
                  button3.Enabled = false;//書き戻しも不可
                  button4.Enabled = false;
              }
              else if (rowLastNo2 == 0)
              {
                  textBox1.Enabled = false;
                  button1.Enabled = false;
                  textBox2.Enabled = true;
                  button2.Enabled = true;
                  strDate = this.confulBKDataSet.BK_Rec[rowLastNo - 1].保存日時;
                  textBox1.Text = strDate.ToLongDateString() + strDate.ToLongTimeString();
                  textBox2.Text = "一度もバックアップされていません";
                  button3.Enabled = true;
                  button4.Enabled = false;
              }
              else
              {
                  //* if (this.confulBKDataSet.BK_Rec[rowLastNo - 1].IsBK_DB_IDNull())//これでOK

                  strDate = this.confulBKDataSet.BK_Rec[rowLastNo - 1].保存日時;
                  strDate2 = this.confulBKDataSet.BK_Rec2[rowLastNo2 - 1].保存日時;
                  if (strDate > strDate2)//BK_1が最新ならば
                  {
                      textBox1.Enabled = false;
                      button1.Enabled = false;
                      textBox2.Enabled = true;
                      button2.Enabled = true;
                      textBox1.Text = strDate.ToLongDateString() + strDate.ToLongTimeString();
                      textBox2.Text = strDate2.ToLongDateString() + strDate2.ToLongTimeString();
                      button3.Enabled = true;//どちらが最新であろうと選んで書き戻す
                      button4.Enabled = true;

                  }
                  else
                  {
                      textBox1.Enabled = true;
                      button1.Enabled = true;
                      textBox2.Enabled = false;
                      button2.Enabled = false;
                      textBox1.Text = strDate.ToLongDateString() + strDate.ToLongTimeString();
                      textBox2.Text = strDate2.ToLongDateString() + strDate2.ToLongTimeString();
                      button3.Enabled = true;
                      button4.Enabled = true;

                  }
              }
          }
          else
          {
              textBox1.Enabled = false;
              button1.Enabled = false;
              textBox2.Enabled = false;
              button2.Enabled = false;

              label3.Text = "ID・パスワードに誤りがあります";
          }

      }
  }
}
/*
           //待機状態
            Cursor.Current = Cursors.WaitCursor;
            //元に戻す
            Cursor.Current = Cursors.Default;

*/