【发布时间】:2011-04-15 15:02:19
【问题描述】:
我在工作中继承了一段代码,我刚刚注意到它有一个相当琐碎但奇怪的小怪癖。所以也许有人可以帮我设置干净的 .NET 2.0 环境来测试它。
有一个 SQL2K5 表包含一个名为 IsEnabled BIT NOT NULL 的列
有一个从该表中选择的存储过程
有一段 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
}
}
奇怪的是,在一些较旧的日志文件中,该值被写为 1 或 0,而在较新的日志文件中,它被写为 true 或 false
所以发生了以下其中一件事情。它是由以下原因引起的:
- 有人更改代码
- 有人将表中的数据类型从 int -> bit 更改
- 有人将 sproc 中的数据类型从 int -> bit 更改(可能其中的强制转换/转换已被删除)
- 几个月前在我们所有的生产服务器上安装了 .NET 3.5,日期似乎与日志文件的更改一致,
在过去的一个小时左右,我在 google 上搜索 .net 2.0 和 .net 3.5 之间的变化,但什么都没有。
任何人都可以对此有所了解吗?
【问题讨论】:
-
您的版本控制系统的日志显示什么?代码被修改了吗?根据文档,所有版本的输出都应为
TrueString或FalseString(即“True”或“False”,大写),并且不太可能更改。 -
这就是事情...... SVN 没有变化,版本没有异常,DLL 修改,我相信我的团队。 DBA 也没有更改表或存储过程的记录(这并不是说他没有)。这不是一个大问题,它没有破坏任何东西......这很奇怪。
标签: sql-server .net-3.5 .net-2.0 sqldatareader boolean