0

我想知道如何在SqlDataReader没有.00. 这是我的阅读代码:

SqlCommand comm = new SqlCommand("SELECT * FROM table", conn);
                spojeni.Open();
                SqlDataReader reader = comm .ExecuteReader();
textBox19.Text = reader .GetDecimal(22).ToString().Replace(',', '.');
}

你能告诉我我应该如何改进这段代码以在没有 .00 的情况下阅读它?

4

1 回答 1

1

您可以在 SQL 语句中转换值:

select *, cast(ColumnName as numeric(9,0)) as Alias from klient where ID_K=1

编辑:

我根本不会使用 GetDecimal,因为我真的不喜欢只有一个整数可供选择的重载的想法,我个人认为使用给定的列名阅读会更好。

因此,要从 cast 列中获取数据,我将执行以下操作:

decimal value = 0;
decimal.TryParse(Convert.ToString(reader["Alias"]), out value);
textBox19.Text = value.ToString();

这可以很容易地变成 SqlDataReader 的扩展,如下所示:

public static decimal GetDecimal(this SqlDataReader reader, string columnName)
{
    decimal value = 0;
    decimal.TryParse(Convert.ToString(reader[columnName]), out value);
    return value;
}

而不仅仅是调用以下内容:

textBox19.Text = precti.GetDecimal("Alias").ToString();

编辑2:

我脑子里突然出现了一些可能更符合你喜好的东西。进行强制转换时抛出了 SQL 语句,您可以使用以下代码简单地按照您希望的方式格式化您的十进制数字:

textBox19.Text = string.Format("{0:n0}", precti.GetDecimal(22));

"{0:n0}" 将产生一个小数点后为 0 位的数值。

于 2013-07-23T07:29:04.753 回答