2015-04-03 129 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") 
相关问题