2016-09-28 59 views
1

我想知道在ADO數據類型adTinyIntadUnsigned之間有什麼區別(實際上)。ADO adTinyInt vs adUnsignedTinyInt與SQL Server

在數據庫(MS SQL服務器)我與交互的列數據

所以,對於一個SQL Server TINYINT列創建ADO參數,我應該用adTinyIntadUnsigned,爲什麼?

例如我的目標是支持SQL Server TINYINT支持的值範圍0-255。所以我想知道哪兩種ADO類型能夠最好地實現這一點。

我讀MSDN每個ADO數據類型的定義:

  • adTinyInt(16)表示一個字節的帶符號整數(DBTYPE_I1)。
  • adUnsignedTinyInt(17)表示一個單字節無符號整數(DBTYPE_UI1)。

如果MS SQL數據類型TINYINT僅保持從1到255的值,將不是最佳的選擇是adUnsignedTinyInt(如在W3 Schools ADO data type mapping matrix示出)?

它似乎都是1字節的大小,所以也許沒關係?

回答

2

使用adUnsignedTinyInt因爲adTinyInt可以將在SQL Server是不允許tinyint負值,因此,你的SQL調用可能會失敗

您的鏈接(http://www.w3schools.com/asp/ado_datatypes.asp)沒有提到adTinyInt爲此

+0

sql server應該限制自己將這個負值存儲爲一個簡單的字節,當你得到相同的值時,你必須知道它是有符號的,所以你把它當作一個有符號的字節(adTinyInt)。 –

+0

@CroCorvino:在這裏建議connect.microsoft.com,因爲SQL Server目前只存儲0-255,無符號,並且已經存在了20年以上 – gbn

+0

是的,但是有符號的值只是最左邊位的字節1 –

0

如果您希望將-128中的值存儲到127,然後使用adTinyInt將這些值傳遞到相對Sql Server TINYINT列並從其中檢索這些值。

而不是通過adUnsignedTinyInt參數類型的商店值在0-255範圍內。

+0

SQL Server tinyint僅支持0-255,因此您無法可靠地使用adTinyInt。 adTinyInt不是選項 – gbn

+0

@Shawn是的,但是帶符號的值只是最左邊位爲1的字節,所以它們總是落在0-255的範圍內,它們的含義根據最左邊的值位 –

+0

我的目標是支持SQL Server TINYINT支持的值範圍0-255。所以我猜無論ADO類型達到那個是我想要的。 – GWR