我有这样的代码来新列添加到数据表:C#的DataTable小数精度
DataColumn col = new DataColumn("column", typeof(decimal)); col.Caption = "Column"; mytable.Columns.Add(col);
如何指定此列小数精度所以价值总是会在我希望它是格式?
我有这样的代码来新列添加到数据表:C#的DataTable小数精度
DataColumn col = new DataColumn("column", typeof(decimal)); col.Caption = "Column"; mytable.Columns.Add(col);
如何指定此列小数精度所以价值总是会在我希望它是格式?
你不能。但是,您可以格式化值,当您使用String.Format
函数从表中检索:
String.Format("{0:0.##}", (Decimal) myTable.Rows[rowIndex].Columns[columnIndex]);
好的。这意味着我有2个选项:1)要么使用数据定义来限制小数数据类型的精度,我想在创建表时使用sql 2)使用Math.Round()或String.Format()进行显示。 – Blablablaster 2011-05-30 13:17:12
@Blablablaster:你将如何使用数据定义来精确限制小数数据类型? – 2011-05-30 13:21:57
create table mytab(somefield decimal(18,2)) – Blablablaster 2011-05-30 13:43:09
我有同样的问题我自己,我通过加载应用程序启动时的整个架构,然后引用列固定它根据需要从架构获取信息。
我只有一个Visual Basic例子,但希望它是很容易转换成C#
' in whatever class you do your database communication:
Private _database As SqlDatabase
Private Shared _schema As DataTable
Sub New()
' or however you handle the connection string/database creation
Dim connectionString as String = GetConnectionString()
_database = New SqlDatabase(connectionString)
RetrieveSchema()
End Sub
Private Function RetrieveSchema() as DataTable
If _schema Is Nothing Then
Using connection As SqlConnection = _database.CreateConnection()
connection.Open()
_schema = connection.GetSchema("Columns")
End Using
End If
return _schema
End Function
Public Function GetColumnInformation(tableName As String, columnName As String) as DataRow
Dim firstMatchingRow as DataRow = (
From row In _schema.Rows _
Where (
row("TABLE_NAME") = tableName AndAlso row("COLUMN_NAME") = columnName)
)).FirstOrDefault()
Return firstMatchingRow
End Function
Dim columnInformation As DataRow = Dal.GetColumnInformation(tableName, columnName)
' find the precision
Dim precision = columnInformation("NUMERIC_PRECISION")
Dim scale = columnInformation("NUMERIC_SCALE")
' convert the decimal to the column's format
' e.g.: 2.345 with a scale of 2 would result in
' 2.35
value = Decimal.Round(value, scale)
的格式应该由你的任何UI处理使用时,DataTable不应该关心格式化,只是数据。 – 2011-05-30 13:12:22