Можно ли обновить двоичное поле в SQL Server? - PullRequest
0 голосов
/ 11 мая 2009

Я знаю, как вставить новую строку в таблицу с двоичным столбцом. Но есть ли способ обновить двоичный столбец после добавления этой строки? Пока исчерпывающий поиск в Google ничего не дал.

МОЕ решение до сих пор это

  1. Получить текущую строку, которую я хочу обновить
  2. удалить строку, которую я хочу обновить
  3. Создайте новую строку с информацией из строки, которую я хочу обновить, плюс новый двоичный файл

Это не выглядит очень элегантно, и я надеялся, что смогу сделать то же самое с оператором обновления.

Вот обновленный код, который я сейчас использую для справки

Dim objCommand As New SqlCommand("UPDATE " & Tablename & " SET " _ 
& column & " = Data  WHERE " & criteria)
objCommand.Parameters.Add("@Data", SqlDbType.Image)
objCommand.Parameters("@Data").Value = BinaryData

Ответы [ 2 ]

1 голос
/ 11 мая 2009

Взгляните на эту статью на TechRepublic для техники. Вам нужно будет использовать методы GetBytes / PutBytes, гораздо более болезненные, чем большинство кода ADO.Net. Также см. MSDN .

0 голосов
/ 12 мая 2009

INSERT BINARY / BYTES

INSERT INTO table_name
(field_name)
VALUES
(4|8|16|32)

ОБНОВЛЕНИЕ БИНАРНЫХ / БАЙТОВ

UPDATE table_name 
SET field_name=field_name|8|16|32 
WHERE field_name_filter=@this_value

ПРИМЕЧАНИЕ: Как только установлен флаг байта, вы не можете обновить его, чтобы удалить его. Таким образом, вы не можете использовать пример UPDATE, чтобы удалить байт, который был установлен в 4, а затем хотите изменить его на 8, он просто добавляет 8, так что теперь у вас будет 4 | 8. Кроме того, размещение обратного байта сложнее, чем кажется, это не просто ОБНОВЛЕНИЕ -4 | 8.

Проще запросить результаты, удалить запись и вставить ее как новую запись со старыми данными (из первого запроса) и переформатировать с правильными байтовыми флагами.

По крайней мере, это мой ограниченный опыт с

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...