65.9K
CodeProject 正在变化。 阅读更多。
Home

从SQL Server DB保存和调用图像

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

1分钟阅读

viewsIcon

7617

DAL 应该像下面这样插入图像。 我使用企业库进行数据访问。 EmployerImage 的数据类型为 SQL Server 中的 image。

DAL 应该像下面这样插入图像。 我使用企业库进行数据访问。 EmployerImage 的数据类型为 SQL Server 表中的 image。

 

Public Sub Insert()
        Try
            Dim DB As Database = DatabaseFactory.CreateDatabase(CWB_DBCONNECTION_STRING)
            Dim DBC As DbCommand = DB.GetStoredProcCommand(EMPLOYERS_INSERT)
            DB.AddInParameter(DBC, "@EmployerID", DbType.Int64, EmployerID)         

            If EmployerImage Is Nothing Then
                DB.AddInParameter(DBC, "@EmployerImage", DbType.Binary, Nothing)
            Else
                DB.AddInParameter(DBC, "@EmployerImage", DbType.Binary, GetByteArrayFromImage(EmployerImage))

            End If

            DB.ExecuteNonQuery(DBC)
        Catch ex As Exception
            Throw
        End Try
 End Sub

 

从图像获取字节数组,您需要创建一个如下的函数。

 Public Function GetByteArrayFromImage(ByVal img As Bitmap) As Byte()
        Try

            Dim ms As New System.IO.MemoryStream
            img.Save(ms, Imaging.ImageFormat.Bmp)
            Dim outBytes(CInt(ms.Length - 1)) As Byte
            ms.Seek(0, System.IO.SeekOrigin.Begin)
            ms.Read(outBytes, 0, CInt(ms.Length))
            Return outBytes
        Catch ex As Exception
            Return Nothing
            Throw

        End Try

    End Function

 

从 SQL Server 调用图像

 Public Sub SelectRow()
        Dim DB As Database = DatabaseFactory.CreateDatabase(CWB_DBCONNECTION_STRING)
        Dim DBC As DbCommand = DB.GetStoredProcCommand(EMPLOYERS_GETBYID)
        Try

            DB.AddInParameter(DBC, "@EmployerID", DbType.Int64, Me.EmployerID)
            Using DR As IDataReader = DB.ExecuteReader(DBC)

                With DR
                    Do While .Read
                                  
                        If Not IsDBNull(.Item("EmployerImage")) Then
                            EmployerImage = GetImageFromByteArray(.Item("EmployerImage"))
                        Else
                            EmployerImage = Nothing
                        End If                    


                    Loop
                End With

                If (Not DR Is Nothing) Then
                    DR.Close()
                End If
            End Using

        Catch ex As Exception
            Throw
        Finally
            DBC.Dispose()
        End Try
    End Sub

 

从 SQL Server 表中获取已保存的图像

   Public Function GetImageFromByteArray(ByVal bytes As Byte()) As Bitmap
        Try
            Return CType(Bitmap.FromStream(New IO.MemoryStream(bytes)), Bitmap)
        Catch ex As Exception
            Return Nothing
            Throw
        End Try
    End Function

 

 

© . All rights reserved.