C# SqlCommand参数替换

C# SqlCommand参数替换,c#,sql,sql-server,parameters,C#,Sql,Sql Server,Parameters,我试图在UPDATE参数上用“.”替换符号,但无法解决它。此参数从SQL DB中的textboxs更新数字类型 我原以为它可以这样做,但参数不包含定义替换。有办法吗 prikaz.Parameters.AddWithValue("@poc_kli", poc_kli.Text).Replace(',', '.'); 您在代码中的错误位置替换。尝试: prikaz.Parameters.AddWithValue("@poc_kli", poc_kli.Text.Replace(',', '.'

我试图在
UPDATE
参数上用“.”替换
符号,但无法解决它。此参数从
SQL DB
中的
textboxs
更新数字类型

我原以为它可以这样做,但
参数
不包含定义
替换
。有办法吗

 prikaz.Parameters.AddWithValue("@poc_kli", poc_kli.Text).Replace(',', '.');

您在代码中的错误位置替换。尝试:

prikaz.Parameters.AddWithValue("@poc_kli", poc_kli.Text.Replace(',', '.'));

您在代码中的错误位置替换。尝试:

prikaz.Parameters.AddWithValue("@poc_kli", poc_kli.Text.Replace(',', '.'));

首先解析值;然后在参数中使用键入的数据。例如:

decimal val = decimal.Parse(poc_kli.Text);
prikaz.Parameters.AddWithValue("poc_kli", val);
CultureInfo culture = CultureInfo.InvariantCulture;
// ^^^ or GetCulture, CurrentCulture, etc
decimal val = decimal.Parse(poc_kli.Text, culture);
解析值时,应使用适当的
CultureInfo
(如果它与默认区域性不同),而不是“替换”。为了简单起见,我假设您实际上不需要指定区域性,但这只是为了让SQL Server开心。但例如:

decimal val = decimal.Parse(poc_kli.Text);
prikaz.Parameters.AddWithValue("poc_kli", val);
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和数据库(完全无关或应该无关),这一事实应该引起您的关注。

首先解析值;然后在参数中使用键入的数据。例如:

decimal val = decimal.Parse(poc_kli.Text);
prikaz.Parameters.AddWithValue("poc_kli", val);
CultureInfo culture = CultureInfo.InvariantCulture;
// ^^^ or GetCulture, CurrentCulture, etc
decimal val = decimal.Parse(poc_kli.Text, culture);
解析值时,应使用适当的
CultureInfo
(如果它与默认区域性不同),而不是“替换”。为了简单起见,我假设您实际上不需要指定区域性,但这只是为了让SQL Server开心。但例如:

decimal val = decimal.Parse(poc_kli.Text);
prikaz.Parameters.AddWithValue("poc_kli", val);
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和数据库(它们完全无关,或者应该无关)。

您必须在textbox prikaz.Parameters.AddWithValue(“@poc_kli”,poc_kli.Text.Replace(',',');您必须在文本框prikaz.Parameters.AddWithValue(“@poc_kli”,poc_kli.Text.Replace(',','))上执行此操作;我敢打赌,
vs
试图对其进行格式化,以使SQL Server满足于文化差异;因此,几乎可以肯定,我同意这一点是完全错误的;我已经对你的评论投了赞成票,因为它作为一个一般性的教学点比我的(它只解决了眼前的技术问题)更有用。我敢打赌,
vs
试图对其进行格式化,以使SQL Server对文化差异感到满意;因此,几乎可以肯定,我同意这一点是完全错误的;我已经对你的评论投了赞成票,因为它作为一个一般的教学点比我的(它只解决眼前的技术问题)更有用。