Vb.net 将位图存储到sql中

Vb.net 将位图存储到sql中,vb.net,image,storage,Vb.net,Image,Storage,我正在编写一个用于打印账单的应用程序。我在加载数据时有一个表单。我想自动打印,所以按照这个顺序,我保存一个填充表单的bmp图像,然后将其存储到mdf数据库中,以便在本例中后期打印每行/单元格图像。但是,当我将表格拖到预览表单中只是为了检查是否正确存储数据时,会显示每行的id,但我看不到该行的图像。。。问题是:我做错了什么?在过去的三天里,我看了很多教程,但我还不知道该怎么办 Public Sub toBitMap() 'Define un nuevo bitmap con las dimen

我正在编写一个用于打印账单的应用程序。我在加载数据时有一个表单。我想自动打印,所以按照这个顺序,我保存一个填充表单的bmp图像,然后将其存储到mdf数据库中,以便在本例中后期打印每行/单元格图像。但是,当我将表格拖到预览表单中只是为了检查是否正确存储数据时,会显示每行的id,但我看不到该行的图像。。。问题是:我做错了什么?在过去的三天里,我看了很多教程,但我还不知道该怎么办

Public Sub toBitMap()
  'Define un nuevo bitmap con las dimensiones del form  
  Dim miBitMap As New Bitmap(imprimir.Width, imprimir.Height)
  ' Dibuja la imagen del form en un objetoBitmap
  imprimir.DrawToBitmap(miBitMap, New Rectangle(0, 0, imprimir.Width, imprimir.Height))
  Dim memoryStreamBuffer = New MemoryStream()
  miBitMap.Save(memoryStreamBuffer, ImageFormat.Bmp)
  Dim data As Byte() = memoryStreamBuffer.GetBuffer()
  Dim saveImage As imagenesTableAdapter = New imagenesTableAdapter
  Dim a As String = saveImage.insertImagen(data)
  If multiple.iteraciones <= 0 Then
    cantidad = saveImage.ScalarQuery()
  End If
End Sub

感谢@Der Golem和@Lars Tech puroponix给出的好答案。通过这种方式,我已经实现了一半的目标:

    Public Sub toBitMap(ByVal indice)
    'Define un nuevo bitmap con las dimensiones del form  
    Dim miBitMap As New Bitmap(imprimir.Width, imprimir.Height)
    ' Dibuja la imagen del form en un objetoBitmap
    imprimir.DrawToBitmap(miBitMap, New Rectangle(0, 0, imprimir.Width, imprimir.Height))
    'definicion de nombre y path para archivos temporales
    Dim tempImageName As String = "tmp" & indice & ".png"
    Dim tmpImageAbsolutePath As String = Application.StartupPath & _  
    "\data\" & tempImageName
    'Creacion de nuevo png
    miBitMap.Save(tmpImageAbsolutePath, ImageFormat.Png)
    'Carga de paths a la base
    Dim saveImage As imagenesTableAdapter = New imagenesTableAdapter
    Dim a As String = saveImage.Insert(tempImageName)
    If indice <= 1 Then
        cantidad = saveImage.ScalarQuery()
    End If
End Sub
现在我只清理tmp文件夹和db


**只需要知道如何将这些文件图片转换成pdf打印,但我有谷歌!:D

您不会在Access DB中看到图像,而是存储字节。那里有很多错误,一个BMP是巨大的,所以考虑一个JPG,考虑只保存一个文件名到MDF和实际文件,以避免膨胀DB,处理你的MeMeSt流,不要使用GetBuffer。这里有很多这样做的例子,非常感谢。我正在寻找关于你建议的信息。你有没有建议另一种方法来进行自动打印?在Access这样一个有限的数据库中,请避免膨胀大数据块。你最好将图像存储在文件系统中,并将路径字符串存储在数据库中。Wheel,我没有提到我将存储图像只是为了打印,之后我会清理数据库。这是一个由vb创建的SQL mdf数据库。现在我计划保存tmp路径并打印表单的图像JPG formatted.FYI-无需在堆栈溢出问题中编辑[Solved]之类的内容-只要在有能力时接受答案-这就足够了。