访问从数据库检索的 DataTable 中的对象时,是否有任何理由不将该对象转换为所需的类型,或者是否有理由使用转换?我知道当我们知道我们正在使用的数据类型时,该规则被强制转换,并在尝试将数据类型更改为它不是的东西时进行转换。假设我们知道列中存储了什么数据类型,强制转换似乎是合适的,但是是否有任何数据库类型问题意味着我们不能依赖它?
Rob Bell
问问题
1224 次
3 回答
4
出于你所说的原因,我总是会投。我知道你需要处理的问题是:
您显然需要能够处理 DBNulls(例如通过使用 Convert.IsDBNull 进行测试)
在 ExecuteScalar 的情况下,我相信您需要检查 null 以及 DBNull。
SQL Server @@IDENTITY 和 SCOPE_IDENTITY 函数即使对于声明为 INT 的列也会返回数字(十进制)。在这种情况下,您可以转换两次 "(int)(decimal)value" 或在 T-SQL 代码中处理它,例如: .
插入 MyTable ... 从 MyTable 中选择 AutoIdColumn,其中 AutoIdColumn = SCOPE_IDENTITY()
或者
INSERT INTO MyTable ...
SELECT CAST(SCOPE_IDENTITY() AS INT)
于 2008-10-08T10:17:22.290 回答
0
两者CAST
和CONVERT
都用于显式地将一种数据类型的表达式转换为另一种数据类型。但是,CONVERT
您也可以指定格式样式。
CAST 的语法:
CAST ( expression AS data_type [ (length ) ])
转换的语法:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
于 2008-10-08T10:18:22.803 回答
0
从 RDBMS 检索时,您应该让数据库驱动程序处理本机类型和请求类型之间的编组。
CAST 受到 SQL 标准的认可,可在最多的 RDBMS 平台上工作。
CONVERT 在更少的平台上可用。
如果您有多平台考虑,则 CONVERT 应仅用于特殊情况,例如无法使用 CAST 完成的自定义格式。
于 2008-11-30T00:29:18.060 回答