我已經創建了一個新的SQL Server本地數據庫,其表名爲drink
。 我使用Microsoft Visual Studio 2008如何將圖像插入到SQL Server數據庫表
表裏面我定義的下列:
id [int], kind [varchar], year [datatime], image [image]
我想圖像插入image
列,但我不知道該怎麼辦。
我需要此列,因爲我想用VB.NET
感謝您的幫助在DataGridView中顯示所有數據!
我已經創建了一個新的SQL Server本地數據庫,其表名爲drink
。 我使用Microsoft Visual Studio 2008如何將圖像插入到SQL Server數據庫表
表裏面我定義的下列:
id [int], kind [varchar], year [datatime], image [image]
我想圖像插入image
列,但我不知道該怎麼辦。
我需要此列,因爲我想用VB.NET
感謝您的幫助在DataGridView中顯示所有數據!
這個工作對我來說...
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
使用OPENROWSET可以插入圖像到數據庫:
insert into tableName (id,kind,ImageColumn)
SELECT 1,'JPEG',BulkColumn
FROM Openrowset(Bulk '<Path of the image>', Single_Blob) as img
有兩種方法。您可以將圖像作爲Blob存儲在數據庫中,也可以將路徑(字符串)存儲到圖像文件中。有討論這件事的答案:Storing images in SQL Server?
試試這個:
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")
如果你可以改變表格格式您應該真正使用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
'圖像'數據類型將在未來版本的SQL Server中刪除。避免在新的開發工作中使用這些數據類型,並計劃修改當前使用它的應用程序。改用'varbinary(max)'。 [請參閱此處](http://msdn.microsoft.com/en-us/library/ms187993.aspx) – 2015-04-04 06:44:20