最终目标是能够使用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“
我已经尝试了其他方法,其中没有一个似乎可以做到这一点。 任何帮助深表感谢, 干杯!
答案 0 :(得分:2)
根据MSDN,inArray
是Convert.ToBase64String(byte[])
的参数名称。因此,temp.Logo
必须为null
。
答案 1 :(得分:0)
image.Src = "data:image/jpeg;base64," + Convert.ToBase64String((byte[])dr["Logo"]);
Above code is working. We have to insert/update image to column Logo. Ex:
update <table>
set Logo= (SELECT BulkColumn
FROM Openrowset( Bulk 'LogoPath...' , Single_Blob) as img)