[ad_1]
你好!
祝大家美好的一天,
我有一个 VB.Net windows 窗体项目,使用 MS SQL Server 作为后端数据库。 我正在将应用程序中的图像存储到数据库中。 这是客户所要求的,例如当用户发布付款凭证时,他需要存储一些手动文档作为交易的支持证明。 一切都很顺利。 图像可以完美地存储和检索。 但正因为如此,数据库的大小增长远远超出了预期。
现在我想知道如何才能尽可能少地占用数据库存储来执行相同的任务。
如果有人可以在这方面提供帮助,我将非常感激。
感谢致敬。
我尝试过的:
首先,我使用 OpenFileDialog 通过窗口浏览在 PictureBox 控件中插入图片。
Public Sub Select_Picture()
Try
OpenFile.ShowDialog()
Dim PicPath As String = OpenFile.FileName
MyPicBox.ImageLocation = PicPath
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
然后为了存储图像,我使用以下代码。
Public Sub SaveImage_() Dim SQL_Connection As New SqlConnection Try Dim MyImage As Image MyImage = MyPicBox.Image SQL_Connection.ConnectionString = MyConnectionString SQL_Connection.Open() Dim MyQuery As String = "insert into tbl_Setup_Companies Values(@Image_)" Dim MyCommand As SqlCommand MyCommand = New SqlCommand(MyQuery, SQL_Connection) MyCommand.Parameters.Add(New SqlParameter("@Image_", SqlDbType.Image)) MyCommand.Parameters("@Image_").Value = ConvertImage(MyImage) MyCommand.ExecuteNonQuery() SQL_Connection.Close() Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
为了将图像转换为字节,我编写了一个名为“ConvertImate”的函数
Public Function ConvertImage(ByVal myImage As Image) As Byte() Dim mstream As New MemoryStream myImage.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg) Dim myBytes(mstream.Length - 1) As Byte mstream.Position = 0 mstream.Read(myBytes, 0, mstream.Length) Return myBytes End Function
解决方案1
您能否不只为图像指定一个唯一的名称,将其作为文件保存到服务器,然后仅在数据库中存储对该文件的引用?
[ad_2]
コメント