2

我对选择什么感到怀疑,我希望得到你的观点,因此,答案将是给谁提供最具建设性的反馈(现在你知道我希望得到什么)

情况。 我有这个 dll,我在公司网站的许多不同项目中使用它,它的主要用途是某种数据包装器,我指定一些参数,然后它选择正确的连接字符串并针对某个数据库运行查询。所以它的主要作用是以统一的方式从不同的数据库中获取数据,然后我再处理。

麻烦开始在我身上下雨。 这个 dll 正在使用 odbc 驱动程序来获取它的数据,其中之一是一个名为“iSeries Access ODBC 驱动程序”的 64 位驱动程序这个驱动程序有这个特定的问题,如果我尝试获取它的数据类型,它会在少数情况下导致溢出

临时解决方案 所以我做了这个热修复,使用 try-catch 来检测有问题的列,如果 catch 块被命中,我将数据类型设置为字符串。ODBC 获取数据没有问题,如果不使用 try-catch 就无法检测数据是十进制还是字符....也就是说,在 64 位版本的驱动程序中,32 位版本工作得很好。

我的选择

  1. 使用 try-catch 并留在 64 位世界
  2. 跳过 try-catch 并留在 32 位世界
  3. 将所有数据作为字符串获取,然后编写一些“十进制检测”代码进行评估

小说明 我刚刚升级了驱动,旧版本更糟糕,现在我至少有一些功能,它是从 2005 年开始的,新版本的性能也更好,我也用 C# 制作了这个库,并且正在使用 .net 4

4

1 回答 1

0

这取决于您将获得的异常数量......如果抛出太多异常,.NET 中的异常会相当慢。如果是一分钟就没有问题...否则...

Get all the data as string, then code some "decimal detection" code to evaluate可能是更好的一个。至少你可以使用decimal.TryParse.

于 2013-09-18T07:31:29.500 回答