错误的十进制值:mysql列

本文关键字:mysql 十进制 错误 | 更新日期: 2023-09-27 18:18:08

所以我有一个应用程序,可以插入和更新数据到我的MySQL数据库。插入数据像魅力一样工作,但是当我尝试更新数据时,我收到以下异常:

Incorrect decimal value: '1,5' for column 'NumberOfHour' at row 1

这是我用于更新的代码:

public void updateRecord(int activityID, string description, int projectID, int customerID, int hourID, int employeeID, int departmentID, int superviserID, string fixedFlex, string employeeType, decimal NumberOfHour, DateTime date, int CallID)
{
        MySqlConnection conn = new MySqlConnection("database=hourregistration;server=193.78.140.90;username=Hour");
        conn.Open();
        using (MySqlCommand cmd = new MySqlCommand(string.Format("UPDATE activity SET Description='{0}',ProjectID='{1}',CustomerID='{2}',HourID='{3}',EmployeeID='{4}',DepartmentID='{5}',SuperviserID='{6}',FixedFlex='{7}',EmployeeType='{8}',NumberOfHour='{9}',Date='{10}',CallID='{11}' WHERE ActivityID='{12}';", description, projectID, customerID, hourID, employeeID, departmentID, superviserID, fixedFlex, employeeType, NumberOfHour, date.ToString("yyyy-MM-dd"), CallID, activityID),conn))
        {
            cmd.ExecuteNonQuery();
        }
}

当我更新没有十进制值(例如:5)的数据时,它很好,但是当我尝试使用逗号(例如:5,1)时,我收到异常..

下面是Create table语句:
CREATE TABLE `activity` (
  `ActivityID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `Description` varchar(100) DEFAULT NULL,
  `ProjectID` int(10) unsigned NOT NULL,
  `CustomerID` int(10) unsigned DEFAULT NULL,
  `HourID` varchar(1) NOT NULL DEFAULT '4',
  `EmployeeID` int(10) unsigned NOT NULL,
  `DepartmentID` int(10) unsigned DEFAULT NULL,
  `SuperviserID` int(10) unsigned DEFAULT NULL,
  `FixedFlex` varchar(10) DEFAULT NULL,
  `EmployeeType` varchar(45) DEFAULT NULL,
  `NumberOfHour` decimal(10,2) DEFAULT '0.00',
  `Date` date DEFAULT NULL,
  `External` tinyint(1) DEFAULT '0',
  `CallID` int(10) DEFAULT '0',
  PRIMARY KEY (`ActivityID`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=54325 DEFAULT CHARSET=latin1 AVG_ROW_LENGTH=20 ROW_FORMAT=FIXED;

错误的十进制值:mysql列

我认为问题出在格式上。你正在尝试添加"1,5"-尝试使用"1.5"。你可以试试用点代替逗号吗

逗号可以替换为点。(我认为问题也出在格式上)

string a = sum.Text;

a = a. replace (",", ".");

我自己解决了。当我在MySQL上更改数据类型,然后在DataSet中更改数据类型时,就发生了这种情况。我发现的解决方案是删除数据集中的列,然后再次添加相同的列,但通过使用TableAdapter中的"configure"菜单项。

我希望这对你有用

我使用了FILTER_FLAG_ALLOW_FRACTION

$ value_in_usd = filter_input (INPUT_POST value_in_usd, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);

$value_in_usd变量在INSERT