SqlCommand参数替换

时间:2013-07-29 11:12:46

标签: c# sql sql-server parameters

我尝试Replace签署“,”和“。”在UPDATE参数上,但我无法解决它。此参数更新textBoxesSQL DB的数字类型。

我认为我可以做这样的事情,但parameter不包含定义Replace。有没有办法做到这一点?

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

2 个答案:

答案 0 :(得分:4)

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

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和数据库(完全不相关或应该是),这一事实应该让您感兴趣。

答案 1 :(得分:2)

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

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