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;
答案 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变量