更新和检索图像(Asp.net c#)

时间:2017-04-07 17:43:38

标签: c# sql asp.net

protected void upimg_about_Click(object sender, EventArgs e)
{               
    con.Open();
    string sqlQuery = " UPDATE [dbo].[tbldetails] SET [image]=@image,[image2]=@image2 WHERE id=@id";
    SqlCommand cmd2 = new SqlCommand(sqlQuery, con);
    cmd2.Parameters.AddWithValue("@id", Session["email"].ToString());

    int img = Image1.PostedFile.ContentLength;
    int img2 = Image2.PostedFile.ContentLength;

    byte[] msdata = new byte[img];
    byte[] msdata2 = new byte[img2];

    Image1.PostedFile.InputStream.Read(msdata, 0, img);
    Image2.PostedFile.InputStream.Read(msdata2, 0, img2);

    cmd2.Parameters.AddWithValue("@image", msdata);
    cmd2.Parameters.AddWithValue("@image2", msdata2);

    if (con.State == ConnectionState.Closed)
    {
        con.Open();
    }
    cmd2.ExecuteNonQuery();

    con.Close();

    data1.Text="Image Updated Successfully";    
}

这是我用来更新数据库中图像的代码。

用户在需要时可以更新图像(例如:在firstpage.aspx中)并可以在下一页(nextpage.aspx)中检索它。

但问题是:假设用户想要仅更新单个图像并且他/她上传图像并单击更新按钮,并且当在下一页中检索图像时,更新的图像是可见的但是那个是已存在于数据库中的不是。我不确定,但在更新期间,其他文件上载是空的,这就是为什么会发生这种情况?还有其他办法吗?

PS:我在firstpage.aspx中有文本框,我正在检索他/她已经放入数据库的文本,因此当用户想要进行更改时,可以轻松完成。

TextBox1.Text = dr["name"].ToString();
TextBox2.Text = dr["address"].ToString();

那么,是否可以检索用户之前提交的图像路径?或者用户可以更新单个图像的任何方式以及在检索期间都可以检索图像吗?

谢谢! :)

1 个答案:

答案 0 :(得分:1)

打破你的代码,这样你就可以一次向数据库发送1张图像。然后将相应的FileUpload和SQL列名称传递给您的函数。根据{{​​1}}是否包含文件,有条件地将新文件发送到数据库。您可以通过查看FileUpload属性来查看此内容。

HasFile