2009-01-06 12 views

Répondre

86
CREATE TABLE Employees 
(
    Id int, 
    Name varchar(50) not null, 
    Photo varbinary(max) not null 
) 


INSERT INTO Employees (Id, Name, Photo) 
SELECT 10, 'John', BulkColumn 
FROM Openrowset(Bulk 'C:\photo.bmp', Single_Blob) as EmployeePicture 
+20

Il est important de noter que le chemin d'accès répertorié est recherché sur SQL Server (pas sur l'ordinateur interrogateur). Donc, si votre SQL Server n'est pas votre machine de dev, vous devrez obtenir votre image référable de la machine SQL Server. – Vaccano

0

Créer une table:

Create Table EmployeeProfile ( 
    EmpId int, 
    EmpName varchar(50) not null, 
    EmpPhoto varbinary(max) not null) 
Go 

Insérer déclaration:

Insert EmployeeProfile 
    (EmpId, EmpName, EmpPhoto) 
    Select 1001, 'Vadivel', BulkColumn 
    from Openrowset(Bulk 'C:\Image1.jpg', Single_Blob) as EmployeePicture 

Cette requête SQL fonctionne bien.

36

Pour mettre à jour un enregistrement:

UPDATE Employees SET [Photo] = (SELECT 
MyImage.* from Openrowset(Bulk 
'C:\photo.bmp', Single_Blob) MyImage) 
where Id = 10 

Notes:

  • Assurez-vous d'ajouter le rôle 'bulkadmin' autorisations pour la connexion que vous utilisez.
  • Les chemins d'accès ne pointent pas vers votre ordinateur lorsque vous utilisez SQL Server Management Studio. Si vous démarrez SSMS sur votre machine locale et que vous vous connectez à une instance SQL Server sur le serveur X, le fichier C: \ photo.bmp pointera sur le disque dur C: sur le serveur X, pas sur votre machine!
+0

Comment puis-je continuer si mon image est stockée localement et que je veux l'insérer dans la base de données distante? – Joze

+2

Utiliser un partage réseau: UPDATE Employés SET [Photo] = (SELECT MyImage. * À partir de Openrowset (Bulk '\\ votre-nom-machine \ Dossier partagé \ photo.bmp', Single_Blob) MyImage) où Id = 10 – mathijsuitmegen

Questions connexes