Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从数据库中提取图像和数据?_C#_Asp.net_Sql - Fatal编程技术网

C# 如何从数据库中提取图像和数据?

C# 如何从数据库中提取图像和数据?,c#,asp.net,sql,C#,Asp.net,Sql,我试图使用C#.net从数据库中提取数据,并使用Foreach循环使其在页面上可见。每次运行代码时,当我知道数据库中至少有7个项目时,只会显示一个项目。我已将C#的代码放在下面 下面是asp.net的代码 <div> <asp:Image ID="imgProd" CssClass="ProdImg" runat="server" /> <asp:Label runat="server" ID="ID" /> <asp:Label runat="ser

我试图使用C#.net从数据库中提取数据,并使用Foreach循环使其在页面上可见。每次运行代码时,当我知道数据库中至少有7个项目时,只会显示一个项目。我已将C#的代码放在下面

下面是asp.net的代码

<div>
<asp:Image ID="imgProd" CssClass="ProdImg" runat="server" />
<asp:Label runat="server" ID="ID"  />
<asp:Label runat="server" ID="Name" />
<asp:Label runat="server" ID="price" />
<asp:TextBox ID="txtQty" MaxLength="3" runat="server" Width="30px" />
<asp:Button runat="server" ID="Addtocart" Text="Add To Cart" CommandName="AddToCart" ItemStyle-CssClass="btnCol" />


如果有人能帮助我,那将非常感谢。

我想你的问题标题应该更像“如何在我的页面上显示数据库结果集”

答案是您应该为此使用数据绑定。通过这种方式,您可以设置数据项在页面上的外观。然后,您可以将一组记录/对象抛出到此列表(使用其布局),并按照布局中的定义呈现它们

下面是一个小例子:

在您的aspx代码中:

<asp:DataList id="dlItems" runat="server">
         <ItemTemplate>
            <%# Eval("ID") %>
            <%# Eval("Name") %>
            <%# Eval("price") %>
         </ItemTemplate>
</asp:DataList>
关于您问题的图像部分,请参阅以下其他线索:


有关数据绑定的更多详细信息,请参见此处:

您应该将数据库中的图像列类型设置为byte[],并使用此tow方法获取和设置图像:

public BitmapImage ImageFromBuffer(Byte[] bytes)
{
    MemoryStream stream = new MemoryStream(bytes);
    BitmapImage image = new BitmapImage();
    image.BeginInit();
    image.StreamSource = stream;
    image.EndInit();
    return image;
}

public Byte[] BufferFromImage(BitmapImage imageSource)
{
    Stream stream = imageSource.StreamSource;
    Byte[] buffer = null;
    if (stream != null && stream.Length > 0)
        {
            using (BinaryReader br = new BinaryReader(stream))
                {
                    buffer = br.ReadBytes((Int32)stream.Length);
                }
        }

    return buffer;
}

我将创建一个文件处理程序*.ashx,并让该组件返回图像。然后,您可以使用传入的适当参数将ImageUrl属性设置为该处理程序。每次看到数据库中的最后一项时。如何使用当前设计查看页面中的7行?您获得的值正确无误。问题是,您正在将数据库中的每一行绑定到同一组控件,因此最后只显示最后一行,该行不会更改,因为数据库中没有更多行
dlItems.DataSource = dtenergy;
dlItems.DataBind();
public BitmapImage ImageFromBuffer(Byte[] bytes)
{
    MemoryStream stream = new MemoryStream(bytes);
    BitmapImage image = new BitmapImage();
    image.BeginInit();
    image.StreamSource = stream;
    image.EndInit();
    return image;
}

public Byte[] BufferFromImage(BitmapImage imageSource)
{
    Stream stream = imageSource.StreamSource;
    Byte[] buffer = null;
    if (stream != null && stream.Length > 0)
        {
            using (BinaryReader br = new BinaryReader(stream))
                {
                    buffer = br.ReadBytes((Int32)stream.Length);
                }
        }

    return buffer;
}