2015-04-03 372 views
2

我已經創建了一個新的SQL Server本地數據庫,其表名爲drink。 我使用Microsoft Visual Studio 2008如何將圖像插入到SQL Server數據庫表

表裏面我定義的下列:

id [int], kind [varchar], year [datatime], image [image] 

我想圖像插入image列,但我不知道該怎麼辦。

我需要此列,因爲我想用VB.NET

感謝您的幫助在DataGridView中顯示所有數據!

+1

如果你可以改變表格格式您應該真正使用Varbinary(Max)作爲Image已被棄用。 http://stackoverflow.com/questions/444072/varbinary-vs-image-sql-server-data-type-to-store-binary-data – 2015-04-03 22:02:40

+0

'圖像'數據類型將在未來版本的SQL Server中刪除。避免在新的開發工作中使用這些數據類型,並計劃修改當前使用它的應用程序。改用'varbinary(max)'。 [請參閱此處](http://msdn.microsoft.com/en-us/library/ms187993.aspx) – 2015-04-04 06:44:20

回答

1

這個工作對我來說...

Imports System.Data.Sql 
Imports System.IO 
Imports System.drawing 

Module Module1 

    Private Const _ConnectString As String = "your connection string here" 

    Sub Main() 
     Dim MyImage As Image = Image.FromFile("RandomImage.jpg") 
     Dim Id As Long = 1 
     SaveDrinkImage(MyImage, Id) 
    End Sub 

    Sub SaveDrinkImage(MyImage As Image, Id As Long) 

     Dim ImageBytes(0) As Byte 
     Using mStream As New MemoryStream() 
       MyImage.Save(mStream, MyImage.RawFormat) 
       ImageBytes = mStream.ToArray() 
     End Using 

     Dim adoConnect = New SqlClient.SqlConnection(_ConnectString) 
     Dim adoCommand = New SqlClient.SqlCommand("UPDATE [drink] SET [image][email protected] WHERE [id][email protected]", adoConnect) 

     With adoCommand.Parameters.Add("@MyNewImage", SqlDbType.Image) 
      .Value = ImageBytes 
      .Size = ImageBytes.Length 
     End With 
     With adoCommand.Parameters.Add("@id", SqlDbType.BigInt) 
      .Value = Id 
     End With 

     adoConnect.Open() 
     adoCommand.ExecuteNonQuery() 
     adoConnect.close() 

    End Sub 

End Module 
3

使用OPENROWSET可以插入圖像到數據庫:

insert into tableName (id,kind,ImageColumn) 
SELECT 1,'JPEG',BulkColumn 
FROM Openrowset(Bulk '<Path of the image>', Single_Blob) as img 
0

有兩種方法。您可以將圖像作爲Blob存儲在數據庫中,也可以將路徑(字符串)存儲到圖像文件中。有討論這件事的答案:Storing images in SQL Server?

0

試試這個:

Sub SaveDrinkToDB(name As String, imageFilePath As String) 
    Using cn = New SqlConnection("connection string here") 
     cn.Open() 
     Using cmd = New SqlCommand("INSERT INTO Drink (Name, Image) Values(@Name,@Image)", cn) 
      cmd.Parameters.AddWithValue("@name", name) 
      cmd.Parameters.AddWithValue("@Image", File.ReadAllBytes(imageFilePath)) 
      cmd.ExecuteNonQuery() 
     End Using 
    End Using 
End Sub 

用法:

SaveDrinkToDB("Milk", "c:\drink.png") 
相關問題