0

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

以下是我编写的代码,除了从 mysql display 获取图像位置外,我还有其他事情要做。

请任何人帮助我!

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);
                }
4

2 回答 2

1

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

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

于 2013-07-24T06:14:54.407 回答
0

什么是a 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”);
于 2013-07-24T06:07:17.630 回答