如何求解图像的空值
本文关键字:空值 图像 何求解 | 更新日期: 2023-09-27 18:33:53
我的数据库表中有redImage和whiteImage。它们的数据类型是图像。还有,二进制图像。我想在网格视图中显示它们。
SqlDataAdapter da= new SqlDataAdapter("SELECT
ballID,
gameLevel,
gameChapter,
redImage,
whiteImage
from
colourGame
WHERE
gameLevel = '"+ ddlLevel.Text+"'
AND gameChapter = '"+ddlChapter.Text+"' ", cn);
ddlLevel 和 ddlChapter 是下拉列表。
ddlLevel.Items.Add("3");
ddlLevel.Items.Add("4");
ddlChapter.Items.Add("1");
ddlChapter.Items.Add("2");
ddlChapter.Items.Add("3");
ddlChapter.Items.Add("4");
ddlChapter.Items.Add("5");
在我的数据库表数据中,如果 redImage 有图像,则 whiteImage 将为 NULL,反之亦然。
因此,我遇到了有关空值的错误。
如果您只是处理数据库中的 null 并且只返回有效图像怎么办?
请注意查询中的合并。 这将仅返回第一个非空值。
编辑:(合并为空字符串而不是第二个图像)
SqlDataAdapter da= new SqlDataAdapter("SELECT
ballID,
gameLevel,
gameChapter,
coalesce(redImage,'') as [redImage],
coalesce(whiteImage, '') as [whiteImage]
from
colourGame
WHERE
gameLevel = '"+ ddlLevel.Text+"'
AND gameChapter = '"+ddlChapter.Text+"' ", cn);
关于SQL注入的评论是真实的,您需要参数化此查询。
编辑#2:处理您的错误。 这是未经测试的,但测试img
以查看其 DBNull 是否。
return new MemoryStream((byte[])img);
更改为:
If(img.GetType() == typeof(System.DBNull)) return new MemoryStream();
return new MemoryStream((byte[])img);
编辑:
你可以把它写成:
<asp:Image ID="imgWhite" Url='<%# Eval("Image") == DBNull.Value ? "" : Eval("Image") %>'></asp:Image>
首先,阅读有关SQL注入的信息。
在 Rowdatabound 上,您必须将该图像和下拉列表绑定到 gridview,然后只有它会显示。
例如。
protected void gvUserInfo_RowDataBound(object sender, GridViewRowEventArgs e)
{
DropDownList ddl = (DropDownList)gvUserInfo.FindControl("yourControlName");
string ddlValue = ddl.SelectedItem.Value;
TextBox txtUserInfo = (TextBox) gvUserInfo.FindControl("yourControlName");
string strValue = txtUserInfo.Text;
Image imgCtrl = (Image) args.Row.FindControl("imgCtrl");
imgCtrl.ImageUrl = m_ConcatUrl;
}
以同样的方式,您必须绑定图像。
你应该试试IsNULL()。
SqlDataAdapter da= new SqlDataAdapter("SELECT
ballID,
gameLevel,
gameChapter,
IsNULL(redImage,'')[redImage],
IsNULL(whiteImage,'')[whiteImage]
from
colourGame
WHERE
gameLevel = '"+ ddlLevel.Text+"'
AND gameChapter = '"+ddlChapter.Text+"' ", cn);