2012-11-21 76 views
2

我有一個FileUpload fileupload2控件和一個圖像框控件image1。現在,我想保存瀏覽圖像,並在瀏覽路徑時將其顯示在圖像框中。我正在編寫如下所示的代碼。如何通過VB.Net使用Asp.Net在SQL Server 2008R2中保存和檢索圖像

該代碼中的問題是什麼,以及當我瀏覽路徑時如何在圖像框中顯示它?

Protected Sub btnsave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnsave.Click 
    Connection() 

    Dim cmd As New SqlCommand 
    cmd.Connection = cn 
    cmd.CommandText = "INSERT INTO Personal_info (image_id,pic)VALUES (@image_id,@pic)" 

    cmd.Parameters.Add("@image_id", SqlDbType.VarChar, 200) 
    cmd.Parameters.Add("@pic", SqlDbType.Image, 200) 

    cmd.Parameters("@image_id").Value = txtid.Text 
    cmd.Parameters("@pic").Value = FileUpload2.FileBytes 

    Dim i = -1 

    i = cmd.ExecuteNonQuery 

    If i = -1 Then 
     lblMessage.ForeColor = Drawing.Color.Red 
     lblMessage.Text = "Fail to Save" 
     'MsgBox("Fail", MsgBoxStyle.OkOnly, "Error") 
    Else 
     lblMessage.ForeColor = Drawing.Color.Green 
     lblMessage.Text = "Success to Save" 
    End If 
End Sub 
+0

你會得到什麼錯誤信息? – SchmitzIT

+0

我看到的一個問題是'DBType.Image'參數類型。根據MSDN,這不存在: http://msdn.microsoft.com/en-us/library/yy6y35y8.aspx 您還錯過了'Else'之前的'MsgBox'行中的結束引用。 – SchmitzIT

+0

沒有錯誤消息。該圖像在數據庫中保存爲,但問題是當我將圖像檢索到水晶報表或網格視圖時,我看到一個空白圖像。 – farzana

回答

-1

在圖像框中顯示imange,您需要提供imange路徑或url。你不能直接從數據庫讀取它。

一個辦法做到這一點是

  1. 從數據庫中檢索
  2. 的imange保存圖像中的服務器
  3. 通過圖像盒圖像服務器路徑

    '1. retrieve the imange from the database 
    Dim cmd As New SqlCommand 
    cmd.Connection = cn 
    cmd.CommandText = "SELECT pic FROM Personal_info WHERE [email protected]_id;" 
    
    cmd.Parameters.Add("@image_id", image_id) 
    
    Dim rd As SqlDataReader = cmd.ExecuteReader 
    Dim MyData() As Byte 
    If rd.Read Then 
        If rd("pic").ToString <> Nothing Then 
         MyData = rd("pic") 
        End If 
    
    End If 
    
    '2. save the image in the server 
    Dim oFileStream As New System.IO.FileStream(System.AppDomain.CurrentDomain.BaseDirectory & "image\image.jpg", System.IO.FileMode.Create, IO.FileAccess.ReadWrite) 
    oFileStream.Write(MyData, 0, MyData.Length) 
    oFileStream.Close() 
    
    '3. pass the image box the image server path 
    image1.ImageUrl = "~/image/image.jpg" 
    
+0

其他方法:在url檢索映像下的ashx處理程序中,並將其放入輸出流。是的,返回字節內容requries一些編程,但它是完全可能的一個不全面的初學者閱讀文檔並返回在http響應的圖像字節。 -1。 – TomTom

相關問題