0

SqlDataReaderデータ型数値 (9,2) なしでどのように読み取ることができるのか疑問に思っています.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 をまったく使用しません。選択する整数のみを持つオーバーロードのアイデアがあまり好きではないためです。個人的には、指定された列名で読む方が良いと思います。

したがって、キャスト列からデータを取得するには、次のようにします。

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 ステートメントをスローするだけで、次のコードを使用して、10 進数を希望どおりにフォーマットすることができます。

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

"{0:n0}" は、小数点以下の位置が 0 の数値になります。

于 2013-07-23T07:29:04.753 に答える