boolean.ToString()在.NET 2.0和EX之间的行为有所不同吗? .NET 3.5

时间:2010-09-22 09:00:39

标签: sql-server .net-3.5 .net-2.0 sqldatareader boolean

我在工作中继承了一段代码,我刚刚发现了一个相当微不足道但又奇怪的小怪癖。所以也许有人可以节省我设置干净的.NET 2.0环境来测试它。

有一个SQL2K5表,其中包含一个名为IsEnabled BIT NOT NULL

的列

从该表中选择一个sproc

有一段C#代码,使用SQL Reader调用SPROC,遍历结果行,并将一些信息写入日志文件以及执行其他操作。

using (SqlDataReader reader = DAL.SqlHelper.ExecuteReader(connStr, "usp_MySproc"))
{
    while (reader.Read())
    {
         //code to do stuff...

         string s = reader["IsEnabled "].ToString(); //exactly like this...

         //code to concatenate `s` with other values
         //log it all to file
    }
}

奇怪的是,在一些较旧的日志文件中,该值被写为10,而在较新的日志文件中,它被写为true或{ {1}}

所以发生了下列事情之一。这是由:

引起的
  1. 有人更改代码
  2. 有人在表格中更改表格中的数据类型 - >位
  3. 有人在int中更改了sproc中的数据类型 - >位(也许有一个演员/转换在那里被删除)
  4. 几个月前在我们所有的生产服务器上安装了.NET 3.5,日期似乎与日志文件的更改相吻合,
  5. 我在最后一个小时左右搜索谷歌,寻找.net 2.0和...之间的变化。 .net 3.5但是没有向我跳出来。

    任何人都可以对此有所了解吗?

1 个答案:

答案 0 :(得分:0)

您可以重建.NET 2.0的代码并运行测试以查看您现在拥有的代码库是否输出1/0或true / false。这应该为您提供答案。此外,在这种情况下,它不是真正的boolean.ToString()。它是数据读取器,使用默认的集合和转换。可能是datareader改变了在调用字符串时输出位字段的方式。