0

SQL Server データベースに画像を正常に入力しました。今、データベースからこの画像を取得し、画像コントロールに表示したいと考えています。ページに ListBoxes を配置したくありません。ASPドットネットで書きました。

Dim MS As MemoryStream
Dim IMG As System.Drawing.Image
Dim FS As FileStream
Dim FI As FileInfo
Dim IMGSTRM As Stream
Dim IMGBYTS As Byte()
Dim ImgData() As Byte

    CMD1 = New SqlCommand("select * from IMG where userid=0", CON1)
    If Not IsNothing(RDR1) Then RDR1.Close()
    RDR1 = CMD1.ExecuteReader()
    If RDR1.Read Then
        IMGBYTS = RDR1!img
        MS = New MemoryStream(IMGBYTS, False)
        IMG = Image.FromStream(MS)
        PIC1.ImageUrl = IMG
    End If

問題は、End If の上の太字の 2 行にあります。

4

1 に答える 1

1

デスクトップアプリケーションを使用している場合、これが解決策です

Private Sub SqlBlob2File (ByVal DestFilePath As String)

    Dim PictureCol As Integer = 0 ' the column # of the BLOB field
    Dim cn As New SqlConnection("server=localhost;integrated security=yes;database=NorthWind")
    Dim cmd As New SqlCommand("SELECT Picture FROM Categories WHERE CategoryName='Test'", cn)

    cn.Open()
    Dim dr As SqlDataReader = cmd.ExecuteReader()
    dr.Read()
    Dim b(dr.GetBytes(PictureCol, 0, Nothing, 0, Integer.MaxValue) - 1) As Byte
    dr.GetBytes(PictureCol, 0, b, 0, b.Length)
    dr.Close()

    cn.Close()

    Dim ms As New System.IO.MemoryStream(b)
    Me.PictureBox1.Image = System.Drawing.Image.FromStream(ms)
End Sub

これは、あなたが見たいかもしれないリンクです: http://support.microsoft.com/kb/321900/en-us

asp.net ソリューション

Web ページまたは aspx ページの場合、URL から Web ページに画像のみを表示できます。最初に webform2 として画像 Web ページが必要で、画像ボックスのみが存在する必要があります。このページは webform1 のイメージです。

このようにして、同じ量の疑似ページを作成する (そしてそれらに同じ名前を付けない) ことに応じて、ページに好きなだけ多くの写真を配置できます。

素敵なページになりますように。

\\ webform1 には画像ボックス、ボタン、ラベルが必要です

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
Dim conn As New SqlConnection(connStr)
Dim cmd As New SqlCommand("SELECT FileName, PictureID FROM Picture", conn)
da = New SqlDataAdapter(cmd)
cbd = New SqlCommandBuilder(da)
dsPictures = New DataSet
da.Fill(dsPictures)
Me.Image1.Visible = False
ListBox1.AutoPostBack = True
Try
ListBox1.DataSource = dsPictures.Tables(0)
ListBox1.DataTextField = "FileName"
ListBox1.DataValueField = "PictureID"
ListBox1.DataBind()
Catch sqlExc As SqlException
Me.Label1.Text = "Database Error" 'sqlExc.ToString
Catch exc As Exception
Me.Label1.Text = "Datbase Connection Failed!"
End Try
conn.Close()
End If
End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
Session.Item("img") = ListBox1.SelectedItem.Value
Image1.Visible = True
Image1.ImageUrl = "http://localhost/testSQLPlaatjesWeb/WebForm2.aspx"
End Sub

/// \\

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim conn As New SqlConnection(connStr)
Dim sqlstr As String = String.Format("SELECT Picture FROM Picture WHERE
(PictureID = {0})", CInt(Session.Item("img")))
Dim cmd As New SqlCommand(sqlstr, conn)
conn.Open()
Dim rdr As SqlDataReader = cmd.ExecuteReader()
rdr.Read()
Response.BinaryWrite(CType(rdr.Item("Picture"), Byte()))
rdr.Close()
conn.Close()
End Sub

///

于 2012-04-05T06:46:54.023 に答える