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");
}
}
}
私は私はエラーを取得していた中で、コードに関する最大の詳細を共有していると思います。このエラーを解決する際にお手伝いください。
の値を追加しているだけのようなクエリを使用パラメータ化されたSQLに値を連結していないクエリで
@t
[email protected]
からqoutesを外し 'クエリ'合計 '@のT 'からqoutes'を削除します'@ t'' – Mairaj
これがあります! Thanx @Leopard –