2014-10-09 109 views
0

我想知道如何在Visual Basic中使用浏览文件对话框将数据保存到我的电脑中。将图像从PictureBox保存到数据库

我使用下面的代码来选择图像形成我的电脑:

Private Sub btnBuscar_Click(sender As Object, e As EventArgs) Handles btnBuscar.Click 

With OpenFileDialog1 
    .CheckFileExists = True 
    .ShowReadOnly = False 
    .Filter = "All Files |*.*| Bitmap Files (*)|*.bmp;*.gif;*.jpg" 
    .FilterIndex = 2 

    If .ShowDialog = DialogResult.OK Then 

     PictureBox1.Image = Image.FromFile(.FileName) 

    End If 

    End With 

End Sub 

从我的形式,我调用另一个类来创建对象:

gestor.agregarMission(txtNombre.Text, txtTrip.Text, dtInicio.Value, numDuracionDia.Text, programa, txtDatos.Text, txtResul.Text, picture, txtNave.Text, cuerpo) 

我需要构建一个一些参数,包括一个Image对象的使命,这是构造函数:

Public Sub agregarMission(pnombre As String, ptripulantes As String, pfechaLanz As Date, pduracion As Double, pprograma As String, pdescripcion As String, presultado As String, **pinsignia As Image**, pnave As String, pcuerpo As String) 

Dim objMision As New Mision(pnombre, ptripulantes, pfechaLanz, pduracion, pprograma, pdescripcion, presultado, pinsignia, pnave, pcuerpo) 
multiMision.registrarMission(objMision) 

End Sub 

我不能看到发现是相当于pictureBox.Image或wahetever,所以我可以将它发送给构造函数。

在我的SQL表中,字段类型是Image,我被告知Image类型实际上是一个数组,所以我不知道是否可以稍后将它转换为String并稍后将其作为原始类型恢复。

如果有人能给我一个提示,我将非常感激!

+0

什么是错的'pinsignia作为Image'? 'Image'是一个实际的.NET类型,所以如果你有一个属性,如'Insignia As Image',你应该没问题。至于DB,存储一个字节数组,列类型取决于DB。 – Plutonix 2014-10-09 13:00:48

回答

1

如果您将图像文件名作为字符串传递到您的agregarMission,您可以使用它读取图像,将其转换为字节并插入它。除非您将它用于别的东西,否则不需要PictureBox。

Dim fiImage As FileInfo = New FileInfo(imageFilename) 
Dim fs As FileStream = New FileStream(imageFilename, FileMode.Open, FileAccess.Read, FileShare.Read) 
Dim imgByteArray = New Byte((Convert.ToInt32(fiImage.Length)) - 1) {} 
fs.Read(imgByteArray, 0, Convert.ToInt32(fiImage.Length)) 
fs.Close 

插入imgByteArray到表中字段

相关问题