试图将SQL中的可变二进制(MAX)值转换为字节[]并在asp图像控件中显示

本文关键字:字节 转换 asp 显示 控件 图像 并在 SQL MAX 二进制 | 更新日期: 2023-09-27 17:49:55

最终目标是能够使用webform从数据库中选择公司及其所有详细信息,然后更新/创建新条目。除了Logo

之外,所有这些都可以工作。

Logo以varbinary(MAX)的形式存储在SQL数据库中,它被拉入c#并转换为byte[],以便使用asp图像控制器显示它。

前端

<img src="" runat="server" id ="image" />

使用SqlDataReader从数据库中提取徽标

        public TemplateData(SqlDataReader dr)
    {
        initialiseData();
        if (dr.HasRows)
        {
            byte[] Logo = (byte[])dr["Logo"];
            //Logo = dr["Logo"].ToString();
            TemplateId = dr["TemplateId"].ToString();
            Comment = dr["Comment"].ToString();
            SchemeCode = dr["SchemeCode"].ToString();
            Version = dr["Version"].ToString();
        }
    }

背后的代码
        protected void ddSchemeCode_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddSchemeCode.SelectedIndex > 0)
        {
            // Existing Data to load from database
            TemplateData temp = DataClass.ReturnData(ddSchemeCode.SelectedItem.Text);
            if (temp != null)
            {
                txtVersion.Text = temp.Version;
                txtComment.Text = temp.Comment;
                txtSchemeCode.Text = temp.SchemeCode;
                txtTemplateId.Text = temp.TemplateId;
                image.Src = "data:image/jpeg;base64," + Convert.ToBase64String(temp.Logo);
            }
        }

我收到的错误是当一个公司被选中是"值不能为空。"参数名称:inArray"

我试过无数种其他方法,但似乎没有一种能奏效。任何帮助都是非常感激的。干杯!

试图将SQL中的可变二进制(MAX)值转换为字节[]并在asp图像控件中显示

根据MSDN, inArrayConvert.ToBase64String(byte[])的参数名。因此,temp.Logo必须为null

图片。Src = "data:image/jpeg;base64," + Convert.ToBase64String((byte[])dr["Logo"]);

上面的代码是工作的。我们必须插入/更新图像的列标志。例:

update <table> 
    set Logo= (SELECT BulkColumn 
    FROM Openrowset( Bulk 'LogoPath...' , Single_Blob) as img)