簡體   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