十进制值不正确:对于列mysql

时间:2014-08-14 07:27:52

标签: c# mysql insert-update

Soo我有一个可以插入和更新数据到我的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;

4 个答案:

答案 0 :(得分:2)

我认为问题在于格式。您正在尝试添加" 1,5" - 尝试使用" 1.5"。你可以用点而不是逗号来尝试。

答案 1 :(得分:0)

您可以将逗号替换为点。 (我认为问题的格式是)

string a = sum.Text;

a = a.Replace(",","。");

sum.Text = a;

答案 2 :(得分:0)

我自己解决了。它发生在我更改MySQL上的数据类型然后在DataSet中更改它。我找到的解决方案是删除数据集中的列,然后再次添加相同的列,但是使用TableAdapter中的“configure”菜单intem。

我希望这对你有用

答案 3 :(得分:0)

我使用了这个FILTER_FLAG_ALLOW_FRACTION

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

在INSERT中使用的$ value_in_usd变量