如何使用C#从mySQL获取图像文件路径

时间:2013-07-24 05:54:57

标签: c# mysql windows

我正在使用以下代码向用户检索图像和其他信息。我还想在图像下方的文本框中显示图像文件路径。我一直试图这样做但没有成功。

以下是我编写的代码,除了从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);
                }

2 个答案:

答案 0 :(得分:1)

在代码的当前表单中,您无法检索图像文件路径,因为您实际上并未将图像存储为文件,而是将其作为一系列字节存储在数据库中。您无法在任何位置找到服务器硬盘上的图像文件,并且无法在应用程序之外检索图像。

如果需要独立于您的应用程序访问图像,或者您不希望图像存储在数据库中(性能问题),那么您需要重新设计数据库。在数据库保存中,您将发出Image.Save()方法将文件保存到特定位置,然后将该字符串(ImageLocation)存储到数据库中,而不是将图像本身存储为字节数组。然后,检索过程只需检索ImageLocation String并在Image.FromFile()方法中使用它。

答案 1 :(得分: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”);