2014-10-09 114 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到表中字段

相關問題