C# 如何从数据库中提取图像和数据?
我试图使用C#.net从数据库中提取数据,并使用Foreach循环使其在页面上可见。每次运行代码时,当我知道数据库中至少有7个项目时,只会显示一个项目。我已将C#的代码放在下面 下面是asp.net的代码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
<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;
}