方法 - 32 位与具有 try-catch 以及 iSeries ODBC 驱动程序

本文关键字:以及 iSeries ODBC 驱动程序 try-catch 位与 方法 | 更新日期: 2023-09-27 18:31:48

我不确定该选择什么,我希望得到你的观点,因此,答案是谁给出最有建设性的反馈(现在你知道我希望得到什么了)

情况。我有这个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

方法 - 32 位与具有 try-catch 以及 iSeries ODBC 驱动程序

这取决于你会得到的异常数量......如果引发的异常过多,则 .NET 中的异常会相当慢。如果是一分钟/分钟,则没有任何问题...否则。。。

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