Sql server ADO adTinyInt与SQL Server的adUnsignedTinyInt

Sql server ADO adTinyInt与SQL Server的adUnsignedTinyInt,sql-server,ado,Sql Server,Ado,我想知道ADO数据类型adTinyInt和adUnsigned之间(实际上)有什么区别 在数据库(MS SQL Server)中,我正在与之交互的列是数据 那么,要为SQL ServerTINYINT列创建ADO参数,我应该使用adTinyInt还是adUnsigned,为什么? e、 g.我的目标是支持SQL Server TINYINT支持的值范围0-255。所以我想知道这两种ADO类型中哪一种最能实现这一点 我在以下网站上阅读了每个ADO数据类型的定义: adTinyInt(16)表示一

我想知道ADO数据类型
adTinyInt
adUnsigned
之间(实际上)有什么区别

在数据库(MS SQL Server)中,我正在与之交互的列是数据

那么,要为SQL Server
TINYINT
列创建ADO参数,我应该使用
adTinyInt
还是
adUnsigned
,为什么?


e、 g.我的目标是支持SQL Server TINYINT支持的值范围0-255。所以我想知道这两种ADO类型中哪一种最能实现这一点

我在以下网站上阅读了每个ADO数据类型的定义:

  • adTinyInt(16)表示一个单字节有符号整数(DBTYPE_I1)
  • adUnsignedTinyInt(17)表示一个单字节无符号整数(DBTYPE_UI1)
如果MS SQL数据类型TINYINT仅包含1到255之间的值,那么最好的选择不是
adUnsignedTinyInt
(如图所示)


看起来两者的大小都是1字节,所以可能没什么关系?

使用
adUnsignedTinyInt
,因为
adTinyInt
可能具有SQL Server中不允许的负值,因此SQL调用可能会失败


由于这个原因,您的链接()没有提到
adTinyInt
如果您想将
-128
中的值存储到
127
,那么使用
adTinyInt
将这些值传递到相对的Sql Server
TINYINT
列,并从中检索这些值


相反,为范围
0-255

中的存储值传递一个
adUnsignedTinyInt
参数类型,sql server应将其自身限制为将此负值存储为一个简单字节,当您获得相同的值时,您必须知道该值是有符号的,因此将其视为有符号字节(adTinyInt)@CiroCorvino:建议在connect.microsoft.com上使用,因为SQL Server只存储0-255,当前未签名,并且已经存储了20多年,但签名值只是字节,最左边的位为1+25,十进制为00011001,-25为11100111(-128+64+32+4+2+1)。这反驳了你的说法。和-1都是1。如果tinyint列中的有符号值为25,“两个补码”不是“有符号幅值”,则将存储00011001,否则,如果col中的值为-25,则将存储11100111。程序员必须知道tinyint列是否包含有符号或无符号的值,并将其视为同义项。使用正确的类型。SQL Server tinyint仅支持0-255,因此无法可靠地使用adTinyInt。adTinyInt不是一个option@Shawn是的,但有符号值只是最左边的位为1的字节,因此它们总是在0-255范围内,它们的含义是根据最左边的位的值而不同。我的目标是支持SQL Server TINYINT支持的值0-255范围。所以我想无论ADO类型实现了什么,这都是我想要的。@robarwebservices好的,那么您必须使用adusingedtinyint ADO类型,如答案中所述。请记住,您最初的请求是:“ADO数据类型adTinyInt和adusigned之间的区别是什么”。。