我已经创建了一个新的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