加载数据库图像的最佳方法

时间:2015-08-15 09:39:15

标签: asp.net sql-server

我正在用asp.net语言写一个在线商店

我必须从SQL Server数据库中读取产品图像,然后在数据列表中显示产品图像。

数据列表中的图片:

<img id='image1' src='<%# Eval("k_code", "Imagec.aspx?ImageID={0}") %>'/>

imagec.aspx后面的代码是:

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.QueryString["ImageID"] != null)
    {
        string strQuery = "select m_code, k_Name1, k_pic, k_code from kalaid where k_code = @id";
        string strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["SuperConnectionString"].ConnectionString;

        SqlCommand cmd = new SqlCommand(strQuery);
        cmd.Parameters.Add("@id", SqlDbType.NVarChar).Value = Convert.ToString(Request.QueryString["ImageID"]);

        SqlConnection con = new SqlConnection(strConnString);

        SqlDataAdapter sda = new SqlDataAdapter();
        cmd.CommandType = CommandType.Text;

        DataTable dt = new DataTable();
        cmd.Connection = con;

        try
        {
            con.Open();
            sda.SelectCommand = cmd;
            sda.Fill(dt);
        }
        catch
        {
            dt = null;
        }
        finally
        {
            con.Close();
            sda.Dispose();
            con.Dispose();
        }

        if (dt != null)
        {
                Byte[] bytes = (Byte[])dt.Rows[0]["k_pic"];

                if (bytes != null)
                {
                    Response.Buffer = true;
                    Response.Charset = "";
                    Response.Cache.SetCacheability(HttpCacheability.NoCache);
                    Response.ContentType = "image/jpeg";
                    Response.AddHeader("content-disposition", "attachment;filename=" + dt.Rows[0]["k_name1"].ToString());
                    Response.BinaryWrite(bytes);
                    Response.Flush();
                    Response.End();
                }
        }
    }
}

我的问题是速度

我可以更改增加页面加载速度的代码吗?

由于

3 个答案:

答案 0 :(得分:1)

保存图片的url目录,不要保存图片。 :d

答案 1 :(得分:1)

如果您使用的是SQL 2012或更高版本,则可以将图像存储在启用了完全访问权限的FileTable中,而不是存储在blob列中。然后,可以将文件表目录复制到Web映像文件夹以进行http访问,或者通过指向FileTable UNC路径的虚拟目录进行公开。此方法可以更有效地存储和检索图像,同时为产品图像和数据提供参照完整性的关系优势。

答案 2 :(得分:0)

如果您正在加载一组小图片,您可以将其加入单张图片(在类似Photoshop的应用程序中),然后只加载一张图片,然后在所需的位置显示部分图片。