0

我有一个数据库,其中有一个表“产品”,在这个表中有一个名为“PackingPicture”od 类型图像的字段。我有一个表单,可以在其中加载包括图像在内的记录详细信息。有没有办法将图像文件路径也加载到文本框?我想这样做的原因是我希望能够以这种形式使用 sql 更新查询来更新记录。我希望用户能够更新以这种形式提交的任何数据,无论它是否是图像。有没有办法在从数据库中检索图像时获取文件路径?或者,如果有一种方法可以在没有文件路径的情况下保存图片本身,我会很高兴知道。

我检索数据的代码:

public void getData(string brand, string product)
{
    DataTable dt = new DataTable();
    Connection c = new Connection();
    SqlCommand sqlCmd = new SqlCommand("SELECT * FROM tblProduct WHERE productNumber = @Product and brandNumber=@brand", c.con);
    SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);

    c.con.Open();
    sqlCmd.Parameters.AddWithValue("@brand", brand);
    sqlCmd.Parameters.AddWithValue("@Product", product);
    sqlDa.Fill(dt);
    SqlDataReader dr = sqlCmd.ExecuteReader();

    if (dt.Rows.Count > 0)
    {
        comboBox2.Text = dt.Rows[0][0].ToString(); 
        //Where ColumnName is the Field from the DB that you want to display
        textBox1.Text = dt.Rows[0][1].ToString();
        textBox2.Text = dt.Rows[0][2].ToString();             
    }

    while (dr.Read())
    {
        byte[] img = (byte[])(dr["PackingPicture"]);              
        if (img == null)
            pictureBox1.Image = null;
        else
        {
            MemoryStream stream = new MemoryStream(img);
            pictureBox1.Image = System.Drawing.Image.FromStream(stream);  
        }
    }

    c.con.Close();
}
4

2 回答 2

1

没有文件路径,因为图像存在于内存和数据库中,但不存在于任何特定的图像文件中。因此,您需要保存它,您可以这样做:

pictureBox1.Image.Save("c:\\path\\to\\image.gif", ImageFormat.Gif); // you have to know your image format
于 2013-08-14T07:57:01.147 回答
1

有没有办法在从数据库中检索图像时获取文件路径?

如果您尚未保存文件路径,则无法检索不存在的内容。

或者,如果有一种方法可以在没有文件路径的情况下保存图片本身

分配给图片框后,您可以保存图片框中的图片,如

pictureBox1.Image.Save("yourfilepath", yourformat);

或者您可以通过流保存它

using(MemoryStream stream = new MemoryStream(img))
{
   FileStream fs = File.OpenWrite("yourfile");
   fs.Write(stream.ToArray());
   fs.Close();
}
于 2013-08-14T08:00:05.110 回答