2013-08-25 70 views
0

我正在使用Access數據庫在VB.Net中製作一張帶有圖片的註冊表單。利用下面的代碼,我得到一個錯誤。「System.Drawing.Image」無法轉換爲「一維數組」

Me.Student_instructorTableAdapter.Insert(txtname,txtpass, ***PictureBox1.Image***) 
Me.Student_instructorTableAdapter.Fill(Me.DatabaseDataSet4.student_instructor) 

MsgBox("Successfully added", MsgBoxStyle.Information) 

PictureBox1.Image被保存到其拋出一個錯誤的Access數據庫(「圖片報」):

"System.Drawing.Image" cannot be converted to '1-dimensional array"

我應該用什麼來代替PictureBox1.Image當我爲了避免異常調用Insert

回答

2

(應該是一個評論,但我需要張貼代碼)

我們需要完整的異常消息確切地知道它的預期(的什麼?1維數組)最有可能這是一個字節數組。

如果是的話,你可以將圖像轉換爲字節數組像這樣...

Public Function ImageToByteArray(imageIn As System.Drawing.Image) As Byte() 
    Dim ms As New MemoryStream() 
    imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png) 
    Return ms.ToArray() 
End Function 

你可以轉換一個字節數組回到這樣的圖像...

Public Function byteArrayToImage(byteArrayIn As Byte()) As Image 
    Dim ms As New MemoryStream(byteArrayIn) 
    Dim returnImage As Image = Image.FromStream(ms) 
    Return returnImage 
End Function 

See here獲取更多信息

我不熟悉訪問數據類型,因此可能會直接支持圖像。如果是這樣,你需要確保你已經爲該列/字段選擇了正確的數據類型。順便說一下,如果你不需要,不要爲新項目使用Access(或者至少存儲引擎/ JET) - 這對於超過10個用戶來說是緩慢的,不可靠的並且存在嚴重的安全問題。如果您不想要完整的SQL Server數據庫,請考慮SQL精簡版(CE)或SQL Express。

+0

不,你幾乎不需要可以轉換爲byte []的圖像流,並進入類型圖像的列。 –

相關問題