我试图从我的SQL Server数据库加载新闻,但我遇到了问题。
Index.aspx.cs:
public static string Load_News()
{
string returnednews = "";
SqlConnection connection = new SqlConnection(Functions.ConnectionTag());
try
{
connection.Open();
using (SqlDataReader reader = new SqlCommand("SELECT TOP 3 * FROM website.dbo.news ORDER BY ui DESC", connection).ExecuteReader())
{
while (reader.Read())
{
returnednews = string.Format("<div class='article'><div class=\"a_header\"> <div class='title' ><a href = '/articles/article.aspx?id={0}' ><i class='fa fa-feed' ></i>{1}</a></div></div><div class='a_body' ><div class='a_thumb' ><img src = '/img/news_thumb_1.jpg' /><hr>{4}<br/><font style='font -weight: 600; color: #8e44ad;'>{2}</font></div><div class='a_content' ><p>{3}</p></div></div><div class='a_footer'></div></div>", new object[] { reader["ui"], reader["title"], reader["poster"], reader["announcement"], reader["date"] });
}
}
return returnednews;
}
catch (Exception exception)
{
return exception.ToString();
}
finally
{
if (connection != null)
{
connection.Dispose();
}
}
}
Index.aspx:
<%@ Page
Title="Website"
Language="C#"
MasterPageFile="~/wes.master"
AutoEventWireup="true"
CodeFile="index.aspx.cs"
Inherits="index" %>
<%@ MasterType VirtualPath='~/wes.master' %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div>
<%=Load_News()%>
</div>
</asp:Content>
一切都很完美,我得到的结果很好但是,它只从数据库而不是3得到1个结果?正如您在查询中看到的那样,我选择了三个TOP新闻,但我只得到一个(查询适用于SQL Server而没有问题)
答案 0 :(得分:4)
由于您每次迭代>一次又一次地将变量分配给returnednews
,因此returnednews
仅 具有最后一行值。
我认为你需要对读者返回的每个值进行一些字符串连接;
returnednews += string.Format("<div class='article'>...
也可以使用using
statement自动处理您的连接,命令和阅读器,而不是手动调用Dispose
方法。