繁体   English   中英

使用.Net SqlClient连接到SQL Azure DB,是否可以为架构中的数据类型获取DBNull对象?

[英]Using .Net SqlClient to connect to SQL Azure DB, is it possible to get a DBNull object for the data type in schema?

我们正在使用System.Data.SqlClient下的类连接到Azure SQL数据库。 我们通过执行查询(或存储过程),然后对所得的IDataReader对象执行以下类似操作来处理数据类型。

var schema = reader.GetSchemaTable();
for (int i = 0; i < schema.Rows.Count; i++)
{
    Type type = (Type) schema.Rows[i]["DataType"];
    // do something for the type
}

此代码针对我们用户的数据库运行,对于其中一个,我们收到以下错误:

System.InvalidCastException
Unable to cast object of type 'System.DBNull' to type 'System.Type'.

由于我们不容易访问用户的数据库服务器,因此很难再现此错误。 我尝试了所有可用于在SQL Azure中创建表的数据类型,但是所有这些数据类型都可以映射到C#中的某些Type 因此,现在我很困惑,对于SQL Azure中的哪种数据库表,我将为架构表的数据类型获得System.DBNull对象?

有任何想法吗? 谢谢。

我们发现了问题。 数据类型是地理(或几何),它们是SQL CLR类型,它需要安装某些程序集(通常与SQL Server一起安装),以便您的代码获得它的.NET运行时类型。 否则,将DBNull作为数据类型返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM