【发布时间】:2017-09-11 10:34:11
【问题描述】:
我正在尝试编写一个通用函数,用于在我的数据库的几个表中填充复合键。
不幸的是,我仅限于使用OleDbConnection,因此无法使用SqlConnection(及相关)类的许多优点。
作为这项工作的一部分,我需要能够将通用系统类型(始终是原始的 string、int 等)转换为对应的 OleDbType 枚举类型。
我查看了this question,其中有几个建议:主要是使用类映射。这种方法可以正常工作,但令我感到奇怪的是,没有任何预构建和预测试的 .NET Framework 组件可以比我编写的任何代码做得更好。我也不喜欢重新发明轮子。建议的第二种方法是在System.Web 命名空间中使用Parameter.ConvertTypeToDbType 方法(恕我直言,这是一个愚蠢的地方,但我离题了)。这似乎工作正常,但是它产生一个 DbType 枚举而不是 OleDbType 我担心这可能会导致兼容性问题。
我目前使用这种方法的尝试如下所示:
OleDbParameter searchValueOne = new OleDbParameter("@searchValueOne", System.Web.UI.WebControls.Parameter.ConvertTypeCodeToDbType(Type.GetTypeCode(typeof(T1))));
所以我的问题是,是否有类似的内置函数提供OleDbType 而不是DbType,或者使用TypeMap 只是最好的方法?
【问题讨论】:
-
((int)DbType.Date)==((int)OleDbType.Double)所以你是正确的,使用你当前的代码会有问题。我认为没有内置函数,因为首选映射可能取决于您要连接的特定数据库,而这些枚举与数据库无关。
标签: c# database ms-access enums oledb