2013-07-24 103 views
0

我使用以下代碼檢索圖像和其他信息給用戶。我還想在圖像下方的文本框中獲取圖像文件路徑顯示。我一直在試圖做到這一點,但沒有成功。如何使用C#從mySQL獲取圖像文件路徑

以下是我編寫的代碼,除了從mysql顯示獲取圖像位置外,我還有其他事情要解決。

任何人都可以幫助我!

private void showData_Click(object sender, EventArgs e) 
      { 
       string myConnection = "datasource = localhost; port=3306; username=root; password=root"; 
       string Query = "select * from MawkMo.Enlist_info;"; 
       MySqlConnection sqlConnection = new MySqlConnection(myConnection); 
       MySqlCommand sqlCommand = new MySqlCommand(Query, sqlConnection); 
       MySqlDataReader myReader; 
       try 
       { 
        sqlConnection.Open(); 
        myReader = sqlCommand.ExecuteReader(); 
        while (myReader.Read()) 
        { 

    byte[] imgbyte = (byte[])(myReader["Photo"]); 
          if (imgbyte == null) 
          { 
           PhotoBox.Image = null; 
          } 
          else 
          { 
           //string imgPath = (string)sqlCommand.ExecuteScalar(); 
           //Photo_path.Text = imgPath; 
           MemoryStream mryStream = new MemoryStream(imgbyte); 
           PhotoBox.Image = System.Drawing.Image.FromStream(mryStream); 
          } 

         } 
        } 
       } 
       catch (Exception ex) 
       { 
        MessageBox.Show(ex.Message); 
       } 
+0

你爲什麼要將圖像存儲爲BLOB。它不是一個好的選擇。瀏覽器無法緩存文件。總是將圖像存儲在服務器上,然後可以將文件位置存儲在數據庫中。 – om471987

+0

@WYSIWYG這看起來不像是一個Web應用程序... –

+0

由於它直接存儲在數據庫中,因此圖像不會顯示爲*「*」路徑。 「MawkMo.Enlist_info」中是否有存儲該路徑名的列? –

回答

0

什麼是PhotoBox.Image是?

MemoryStream imagebuf=new MemoryStream((byte[])myReader["Photo"]); 

//create image object 
System.Drawing.Image outImage=System.Drawing.Image.FromStream(imagebuf,true); 
outImage.Save(Server.MapPath(「PhotoTemp/」)+」2.gif」); 
+0

PhotoBox.Image是如果有圖像將顯示圖像的框。 – user2042721

+0

系統無法識別此「Server.MapPath(」PhotoTemp /「)+」2.gif「」 – user2042721

1

在代碼的目前的形式,因爲你沒有實際存儲的圖像文件,你不能檢索的映像文件的路徑,你是把它作爲一個系列數據庫的字節。您不會在服務器硬盤上的任何位置找到圖像文件,並且圖像將無法在您的應用程序之外檢索到。

如果有權訪問獨立於應用程序的圖像是一個問題,或者如果您不希望圖像存儲在數據庫中(性能問題),那麼您需要重新設計數據庫。在數據庫保存中,您將發出Image.Save()方法將文件保存到特定位置,然後將該字符串(ImageLocation)存儲到數據庫中,而不是將圖像本身存儲爲字節數組。檢索過程就是檢索ImageLocation字符串,並在Image.FromFile()方法中使用它。