这段使用MemoryStream的代码为什么会导致“无效参数”?!!!!!!
前段时间问了一个关于用ADO.NET如何从SQLserver中显示image数据类型的问题,得到了一段代码,如下:
Dim con As New SqlConnection("Server=hz-lfy;uid=sa;pwd=;database=MyTestDb")
Dim da As New SqlDataAdapter("Select * From MyImages", con)
Dim MyCB As SqlCommandBuilder = New SqlCommandBuilder(da)
Dim ds As New DataSet
con.Open()
da.Fill(ds, "MyImages")
Dim myRow As DataRow
myRow = ds.Tables("MyImages").Rows(0)
Dim MyData() As Byte
MyData = myRow("imgField")
Dim K As Long
K = UBound(MyData)
Dim w As New MemoryStream(MyData)
'关键在这里,Me.PictureBox1.Image = System.Drawing.Image.FromStream(w)捕捉到异常“参数错误“,查了一些资料也没有解决这个问题,甚至在运行《ADO.NET技术内幕》这本书第十三章的一个示例代码中也产生了这个'错误,后面再详述。
Try
Me.PictureBox1.Image = System.Drawing.Image.FromStream(w)
Catch ex As Exception
MsgBox(ex.Message)
End Try
MyCB = Nothing
ds = Nothing
da = Nothing
con.Close()
con = Nothing
在微软.net程序员系列丛书的《ADO.NET技术内幕》这本书的第十三章有一个ShowEmployeesPhotos示例,用来从Northwind数据库中的Employee表中读取数据,这个表中有一个Photo列存储着IMAGE类型的字段,我运行这个示例的时候仍然存在着“无效参数”问题。具体的代码位置是在:
Dim strm As New IO.MemoryStream(aChildRows(0).Photo)
Dim bmp As New Bitmap(strm)
picPhoto.Image = bmp
到了这行语句Dim bmp As New Bitmap(strm)就产生了“无效参数”提示。
各位大虾帮忙看看到底是什么问题。