我正在使用以下代码向用户检索图像和其他信息。我还想在图像下方的文本框中显示图像文件路径。我一直试图这样做但没有成功。
以下是我编写的代码,除了从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 :(得分: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”);