如何使用picturebox在vb.net中存储和检索sql server数据库中的图像

时间:2012-04-22 12:38:33

标签: vb.net

有人可以告诉我使用vb.net在SQL Server数据库中存储和检索图像的最简单方法。

非常重要的考虑要求:

嗯,vb.net中的应用程序似乎有一个可以由局域网计算机访问的数据库,因此一旦另一台计算机应用程序从服务器请求数据库,SQL Server 2005数据库就允许远程计算机共享其数据库。

因此,每台其他计算机都必须在SQL Server 2005中存储和检索图像。例如,comp1必须将拍摄的图像存储到服务器中并像tableadapter一样检索它。

我正在使用绑定和tableadapter将详细信息存储在数据库中并从db中检索信息。如果您有代码或任何适用于我的内容,请在此处发布...

请与我分享如何存储图像并通过vb.net检索SQL Server,前提是还有共享SQL Server数据库的LAN计算机。

如果有人对这些东西有所了解,我会非常感激。

我全心全意地请求您考虑我的问题。

最诚挚的问候,

Hosseinel

1 个答案:

答案 0 :(得分:1)

让我们有一个包含图像的表格(而不是最大值,你可以使用所需的尺寸):

CREATE TABLE dbo.STORED_IMAGES
     (
     ID int NOT NULL  IDENTITY (1, 1),
     Img varbinary(MAX) NULL
     ) 

存储图片:

Dim CMD As New SqlClient.SqlCommand("insert into STORED_IMAGES(Img) values(@Img)",cn)
CMD.Parameters.Add("@Img", SqlDbType.VarBinary, Integer.MaxValue).Value = ReadFile(Path)

阅读文件的功能:

Private Function ReadFile(sPath As String) As Byte()
        Dim data As Byte() = Nothing
        Dim fInfo As New IO.FileInfo(sPath)
        Dim numBytes As Long = fInfo.Length
        Using fStream As New IO.FileStream(sPath, IO.FileMode.Open, IO.FileAccess.Read)
            Dim br As New IO.BinaryReader(fStream)
            data = br.ReadBytes(CInt(numBytes))
        End Using
        Return data
    End Function

从DB获取文件:

Dim fcmd As New SqlCommand("select Img from STORED_IMAGES where ID=@ID", cn)
fcmd.Parameters.Add("@ID", SqlDbType.Int).Value = 3 'e.g.
Dim bytes As Byte() = fcmd.ExecuteScalar

我认为对于tableadapters,您的数据表将包含类型为Byte()的列。