我试图Replace
用“。”在“,”上签名。在UPDATE
参数上,但我无法解决它。textBoxes
此参数从in更新数值类型SQL DB
。
我认为它可以让我做这样的事情,但parameter
不包含 definiton Replace
。有什么办法吗?
prikaz.Parameters.AddWithValue("@poc_kli", poc_kli.Text).Replace(',', '.');
我试图Replace
用“。”在“,”上签名。在UPDATE
参数上,但我无法解决它。textBoxes
此参数从in更新数值类型SQL DB
。
我认为它可以让我做这样的事情,但parameter
不包含 definiton Replace
。有什么办法吗?
prikaz.Parameters.AddWithValue("@poc_kli", poc_kli.Text).Replace(',', '.');
先解析值;然后在参数中使用类型化的数据。例如:
decimal val = decimal.Parse(poc_kli.Text);
prikaz.Parameters.AddWithValue("poc_kli", val);
在解析值时,您应该使用适当的CultureInfo
(如果它与默认区域性不同)而不是“替换”。为简单起见,我假设您实际上不需要指定文化,但这只是为了让 SQL Server 满意。但例如:
CultureInfo culture = CultureInfo.InvariantCulture;
// ^^^ or GetCulture, CurrentCulture, etc
decimal val = decimal.Parse(poc_kli.Text, culture);
更好的办法是将数据访问代码与 UI 代码完全分开:
decimal val = decimal.Parse(poc_kli.Text);
SomeDatabaseMethod(val, ...other args);
...
public void SomeDatabaseMethod(decimal pocKli, ... other parameters ...)
{
...
prikaz.Parameters.AddWithValue("poc_kli", pocKli);
...
}
您有一行代码同时涉及 UI 和数据库(它们完全不相关,或者应该是)这一事实应该引起您的关注。
您在代码中的错误位置进行替换。尝试:
prikaz.Parameters.AddWithValue("@poc_kli", poc_kli.Text.Replace(',', '.'));