0

我正在使用 sql server 2005 数据库开发 ac# 应用程序。什么是从数据库带到数据读取器的值转换为十进制的最佳方法,不知道来自基数的值是小数还是 bigint?

        if (dataReader.IsDBNull(0) == false) {
            PLAYER.PLAYER_ID = dataReader.GetDecimal(0);
        }

在我的 PLAYER 对象中,PLAYER_ID 是十进制类型。

我使用两个不同的数据库,因此,来自基数的值可以是 bigint 或 decimal。如果这是小数,那没问题,但如果是大整数,我会收到错误消息。

4

3 回答 3

2

您应该能够使用GetFieldType方法来确定对象的数据类型。

于 2012-09-26T17:34:17.697 回答
1

您可以使用 GetFieldType 来确定类型

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getfieldtype.aspx

Type type = dataReader.GetFieldType(0);

然后,您可以使用适当的读取器方法来读取数据。

您可能希望避免为每一行调用 GetFieldType。在开始读取行之前调用它并设置一个标志来指示此特定查询返回的类型。

于 2012-09-26T17:35:11.687 回答
0

使用Decimal.TryParse

decimal tempID;

Decimal.TryParse(dataReader[0], out tempID);
PLAYER.PLAYER_ID = tempID;

它应该将值转换为小数,除非它为空。如果它为空,十进制将保持为 0。

于 2012-09-26T17:34:46.083 回答