2016-09-28 1 views
1

Мне интересно, какая разница (в практическом смысле) между типами данных ADO adTinyInt и adUnsigned.ADO adTinyInt vs adUnsignedTinyInt с SQL Server

В базе данных (MS SQL Server) столбец Я взаимодействующий с данными имеет

Таким образом, для создания параметров ADO для столбца SQL Server TINYINT, я должен использовать adTinyInt или adUnsigned, и почему?

например. Моя цель - поддерживать диапазон значений 0-255, поддерживаемый SQL Server TINYINT. Поэтому я хочу знать, какой из этих двух типов ADO лучше всего подходит.

Я прочитал определения каждого типа данных ADO на MSDN:

  • adTinyInt (16) Указывает на один байт целое число (DBTYPE_I1).
  • adUnsignedTinyInt (17) Указывает однобайтное целое без знака (DBTYPE_UI1).

Если тип данных TINYINT MS SQL содержит только значения от 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

@CiroCorvino: предложите это здесь 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

Моя цель - поддерживать диапазон значений 0-255, поддерживаемый SQL Server TINYINT. Поэтому я предполагаю, что любой тип ADO достигает того, что я хочу. – GWR