SQL: обновить таблицу с картинкой из папки, по id # - PullRequest
0 голосов
/ 23 августа 2011

В настоящий момент у меня есть таблица со столбцами (id # (int), picture (varbinary (MAX))), и у меня на жестком диске есть папка с кучей изображений. Изображения в папке называются'id' Я хочу сопоставить их в своей таблице. Как я могу это сделать?

Example:

Table Row: id=25166, picture=NULL
25166.jpg

1 Ответ

1 голос
/ 23 августа 2011

Если вам нужен пример, в котором используется только проверка SQL, выполните следующие действия:

. Он использует курсор для циклического перемещения по каждой из строк, которые не содержат данных изображения, и для каждой найденной строки используется OPENROWSET. БОЛЬШОЙ провайдер для загрузки файла.

CREATE TABLE ImageStore
( 
id INT, 
picture VARBINARY(MAX) NULL
)
GO 

INSERT INTO ImageStore (id) VALUES(25166)
INSERT INTO ImageStore (id) VALUES(25167)

DECLARE @id INT
DECLARE image_cursor CURSOR FOR 
SELECT id FROM ImageStore WHERE picture IS NULL

OPEN image_cursor;

FETCH NEXT FROM image_cursor 
INTO @id;

WHILE @@FETCH_STATUS = 0
BEGIN
    DECLARE @sql NVARCHAR(MAX)

    DECLARE @imagePath NVARCHAR(255)
    SET @imagePath = 'C:\' + RTRIM(LTRIM(STR(@id))) + '.gif'

    SET @sql = 'UPDATE ImageStore '
    SET @sql = @sql + 'SET picture = (SELECT BulkColumn FROM OPENROWSET( BULK ''' + @imagePath + ''', Single_Blob) AS picture) '
    SET @sql = @sql + 'WHERE id = ' + STR(@id)

    BEGIN TRY
        EXECUTE sp_executesql @sql 
    END TRY
    BEGIN CATCH

    END CATCH   

    FETCH NEXT FROM image_cursor 
    INTO @id;
END
CLOSE image_cursor;
DEALLOCATE image_cursor;

SELECT * FROM ImageStore

DROP TABLE ImageStore
...