2016-09-08 7 views
0

'schedulle'という名前のテーブルのデータを更新しようとしています。しかし、それぞれの時間制御がdouble型の値を含む条件文に行き、私はエラーを取得しています:C#の「データ切り捨て」エラー

Data truncated for column 'total' at row 1" string

私は怒鳴るコードでこのエラーを取得しています:

//Insert Data in Schedule 
        foreach (ScheduleData item in schedUpdate) 
        { 
         query = "UPDATE schedulle SET " 
          +" sch_day='"+ item.DayOfWeek + "',morning='"+ item.Morning + "',evening='"+ item.Evening + "',total='@t' WHERE emp_id_fk='"+global_ID+"'"; 
         command = new MySqlCommand(query, connection, transaction); 
         if (item.Morning.Equals("set") && item.Evening.Equals("set")) 
         { 
          command.Parameters.AddWithValue("@t", 5.0); 
         } 
         if (item.Morning.Equals("set") && item.Evening.Equals("unset")) 
         { 
          command.Parameters.AddWithValue("@t", Convert.ToDouble(2.5)); 
         } 
         if (item.Morning.Equals("unset") && item.Evening.Equals("set")) 
         { 
          command.Parameters.AddWithValue("@t", 2.5); 
         } 
         if (item.Morning.Equals("unset") && item.Evening.Equals("unset")) 
         { 
          command.Parameters.AddWithValue("@t", 0); 
         } 
         command.ExecuteNonQuery(); 
        } 
        transaction.Commit(); 

       } 
       catch (Exception ex) 
       { 
        transaction.Rollback(); 
        MessageBox.Show(ex.Message); 
       } 
       finally 
       { 
        connection.Close(); 
       } 
      } 

私のデータベーススキーマは怒鳴るようです:

CREATE TABLE payroll_db.schedulle (
    sch_id INT(11) NOT NULL AUTO_INCREMENT, 
    emp_id_fk INT(11) NOT NULL, 
    sch_day VARCHAR(10) NOT NULL, 
    morning VARCHAR(10) NOT NULL DEFAULT 'unset', 
    evening VARCHAR(10) NOT NULL DEFAULT 'unset', 
    total DOUBLE(10, 3) NOT NULL, 
    PRIMARY KEY (sch_id), 
    INDEX emp_id_fk (emp_id_fk), 
    CONSTRAINT schedulle_ibfk_1 FOREIGN KEY (emp_id_fk) 
    REFERENCES payroll_db.employee(emp_id) ON DELETE CASCADE ON UPDATE CASCADE 
) 
ENGINE = INNODB 
AUTO_INCREMENT = 64 
AVG_ROW_LENGTH = 2340 
CHARACTER SET ascii 
COLLATE ascii_general_ci 
ROW_FORMAT = DYNAMIC; 

また、 'item'はScheduleDataクラスのインスタンスです。 ScheduleDataクラスが怒鳴る言及されています

public class ScheduleData : INotifyPropertyChanged 
     { 

      private string dayOfWeek; 
      public string DayOfWeek 
      { 
       get { return dayOfWeek; } 
       set 
       { 
        if (dayOfWeek != value) 
        { 
         dayOfWeek = value; 
         OnPropertyChanged("DayOfWeek"); 
        } 
       } 
      } 

      private string morning = "unset"; 
      public string Morning 
      { 
       get { return morning; } 
       set 
       { 
        if (morning != value) 
        { 
         morning = value; 
         OnPropertyChanged("Morning"); 
        } 
       } 
      } 

      private string evening = "unset"; 
      public string Evening 
      { 
       get { return evening; } 
       set 
       { 
        if (evening != value) 
        { 
         evening = value; 
         OnPropertyChanged("Evening"); 
        } 
       } 
      } 

      private double total; 
      public double Total 
      { 
       get { return total; } 
       set 
       { 
        if(total != value) 
        { 
         total = value; 
         OnPropertyChanged("Total"); 
        } 
       } 
      } 


      public event PropertyChangedEventHandler PropertyChanged; 
      protected void OnPropertyChanged(string propertyName) 
      { 
       PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
      } 
     } 

「SchedUpdate」プロパティが怒鳴る言及されています

private List<ScheduleData> schedUpdate; 
     public List<ScheduleData> SchedUpdate 
     { 
      get 
      { 
       return schedUpdate; 
      } 
      set 
      { 
       if (schedUpdate != value) 
       { 
        schedUpdate = value; 
        OnPropertyChanged("SchedUpdate"); 
       } 
      } 
     } 

私は私はエラーを取得していた中で、コードに関する最大の詳細を共有していると思います。このエラーを解決する際にお手伝いください。

+0

の値を追加しているだけのようなクエリを使用パラメータ化されたSQLに値を連結していないクエリで@t[email protected]

からqoutesを外し 'クエリ'合計 '@のT 'からqoutes'を削除します'@ t'' – Mairaj

+0

これがあります! Thanx @Leopard –

答えて

0

パラメータ名@tの周囲にqoutesを指定しましたが、これは必須ではありません。 =また、あなたはパラメータ@t

関連する問題