在VB中的SQL数据库中显示Windows.Form上的图像(Visual Studio 2008)

时间:2013-09-11 20:15:04

标签: vb.net visual-studio-2008

我在ID卡数据库中有一些爆头,我希望在我在VB 2008中编写的程序中显示。以下代码基于Microsoft的支持文章,可以找到它here和具体来自步骤'11'。

    aiuQuery.CommandText = "select a.ImageData From Images a, Cardholders b WHERE b.UserText6 = '" & _
                           empID & "' And a.CardholderID = b.CardholderID"
    aiuReader = aiuQuery.ExecuteReader
    If aiuReader.Read Then
        Dim bytBLOBData(aiuReader.GetBytes(1, 0, Nothing, 0, Integer.MaxValue) - 1) As Byte
        aiuReader.GetBytes(1, 0, bytBLOBData, 0, bytBLOBData.Length)
        Dim stmBLOBData As New MemoryStream(bytBLOBData)
        pbHeadShot.Image = Image.FromStream(stmBLOBData)
    End If
    aiuReader.Close()

'If'块内的第一行(Dim bytBLOBData ...)生成一个错误,声称“索引超出了数组的范围”。

在程序之外测试SQL是正确的。

有关此错误原因的建议吗?一个更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:2)

方法GetBytes要求,作为第一个参数,要读取的字段的索引 在NET中,数组索引从零开始,而不是在1

  Dim bytBLOBData(aiuReader.GetBytes(0, 0, Nothing, 0, Integer.MaxValue) - 1) As Byte
  aiuReader.GetBytes(0, 0, bytBLOBData, 0, bytBLOBData.Length)

您查询只返回一个字段,因此您应该将值0用作第一个参数