0
我有一個表在此刻的列(ID#(INT),圖片(varbinary(MAX)),並且我有我的硬盤上的文件夾與噸圖片。該文件夾中的圖片是由「ID」我想在我的表,以配合他們。我怎麼能這樣命名?SQL:更新表與文件夾中的圖片,通過ID#
Example:
Table Row: id=25166, picture=NULL
25166.jpg
我有一個表在此刻的列(ID#(INT),圖片(varbinary(MAX)),並且我有我的硬盤上的文件夾與噸圖片。該文件夾中的圖片是由「ID」我想在我的表,以配合他們。我怎麼能這樣命名?SQL:更新表與文件夾中的圖片,通過ID#
Example:
Table Row: id=25166, picture=NULL
25166.jpg
如果你需要它僅使用SQL簽了一個例子以下內容:
它使用光標循環遍歷每個不包含圖像數據的行,並且找到的每一行均使用OPENROWSET BULK提供程序加載文件。
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
工作完美!現在我有一些新的關鍵字和東西要了解!謝謝! – fwaokda
也許您可以告訴我們更多關於您嘗試使用的技術的信息......顯然,您將循環訪問指定目錄中的文件,並使用圖像內容,但您想要使用哪些工具? –
你使用什麼語言:SQL端和SQL數據庫和服務器之間的接口,我猜SQL服務器和C#,我是對的嗎? – Johan
@Chris哦對不起,我正在使用SQL Server 2008.我想我應該可以這麼做,或者我需要另一種語言來幫助循環所有內容?這應該是一次性的事情,而不是我需要建立一個前端來做更多的事情,而不僅僅是一次...... – fwaokda