从数据库中检索数据时转换或转换?

Rob*_*ell 5 .net datatable casting

访问从数据库检索的DataTable中的对象时,是否有任何理由不将对象强制转换为所需类型,或者是否有理由使用转换?我知道当我们知道我们正在使用什么数据类型时会抛出规则,并在尝试将数据类型更改为不是的时转换.假设我们知道列中存储了什么数据类型,强制转换似乎是合适的,但有没有任何数据库类型问题意味着我们不能依赖于此?

Joe*_*Joe 4

由于你所说的原因,我总是会选角。我知道您需要处理的问题是:

  1. 您显然需要能够处理 DBNulls (例如通过使用 Convert.IsDBNull 进行测试)

  2. 对于 ExecuteScalar,我相信您需要检查 null 以及 DBNull。

  3. SQL Server @@IDENTITY 和 SCOPE_IDENTITY 函数即使对于声明为 INT 的列也会返回数字(十进制)。在这种情况下,您可以强制转换两次“(int)(decimal)value”或在 T-SQL 代码中处理它,例如: 。

    插入 MyTable ... SELECT AutoIdColumn FROM MyTable WHERE AutoIdColumn = SCOPE_IDENTITY()

或者

INSERT INTO MyTable ...
SELECT CAST(SCOPE_IDENTITY() AS INT)
Run Code Online (Sandbox Code Playgroud)