2011-09-22 2 views

Répondre

1

Cela fonctionnera pour le serveur SQL 2008r2 ... mais vous devez d'abord créer une base de données de flux de fichiers.

// créer databse

CREATE DATABASE Archive 
ON 
PRIMARY (NAME = Arch1,FILENAME = 'c:\data\archdat1.mdf'), 
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM(NAME = Arch3,FILENAME = 'c:\data\filestream1') 
LOG ON (NAME = Archlog1,FILENAME = 'c:\data\archlog1.ldf') 
GO 

// création de table

Use Archive 
GO 
CREATE TABLE [FileStreamDataStorage] 
(
[ID] [INT] IDENTITY(1,1) NOT NULL, 
[FileStreamData] VARBINARY(MAX) FILESTREAM NULL, 
[FileStreamDataGUID] UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE DEFAULT NEWSEQUENTIALID(), 
[DateTime] DATETIME DEFAULT GETDATE() 
) 
ON [PRIMARY] 
FILESTREAM_ON FileStreamGroup1 
GO 

// insertion de valeur

Use Archive 
GO 
INSERT INTO [FileStreamDataStorage] (FileStreamData) 
SELECT * FROM 
OPENROWSET(BULK N'C:\Users\Public\Pictures\Sample Pictures\image1.jpg' ,SINGLE_BLOB) AS Document 
GO 
1

Vous pouvez télécharger une image dans un db (et récupérer) en utilisant octet [] en tant que type de données, en supposant que dans votre base de colonne correspondant est un blob.
Donc, si vous chargez votre image avec byte[] img = File.ReadAllBytes(your_file) vous pouvez utiliser une requête comme celui-ci INSERT INTO table SET image_col = @par, où par est un paramètre dont la valeur est img.

+0

Est-il possible que vous pouvez me pointer vers un bon lien qui explique et illustre cela? Je ne suis encore qu'un débutant chez sql et tu m'as perdu chez BLOB. –

+0

En outre, je recherche un peu et a découvert que dans ma base de données actuelle, le type de données auquel BLOB correspond est varbinary (MAX). –

+0

@HelloJonnyOh: BLOB reste pour _Bynary LOng Object_, vous pouvez l'imaginer comme un tableau d'octets. Vous pouvez donc insérer ou récupérer des données vers/depuis un BLOB en utilisant des requêtes normales dans lesquelles les données envoyées/reçues vers/depuis les blobs sont des octets []. Assez facile. – Marco

Questions connexes