错误的十进制值: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;
我认为问题出在格式上。你正在尝试添加"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