如何以有效的方式创建投票系统
Posted
技术标签:
【中文标题】如何以有效的方式创建投票系统【英文标题】:How can I create a poll system in an efficient way 【发布时间】:2021-09-07 00:08:36 【问题描述】:我在 ASP 中有我的代码,轮询系统从 SQL 检索数据(每次轮询的计数),但我使用它的方式效率不高。我需要帮助以有效的方式重写相同的代码。 我使用了很多 connect 、sqlDataReader 和 query !!!我想把它们都最小化
C#
Connect con = new Connect();
Connect con1 = new Connect();
Connect con22 = new Connect();
Connect con3 = new Connect(); Connect con4 = new Connect();
String Scmd = (@"SELECT COUNT(poll_Name)FROM aspnet_Poll WHERE poll_Name='Good';");
String Scmd1 = (@"SELECT COUNT(poll_Name)FROM aspnet_Poll WHERE poll_Name='Excellent';");
String Scmd2 = (@"SELECT COUNT(poll_Name)FROM aspnet_Poll WHERE poll_Name='Acceptable';");
String Scmd3 = (@"SELECT COUNT(poll_Name)FROM aspnet_Poll WHERE poll_Name='I Dont Know';");
String Scmd4 = (@"SELECT COUNT(poll_Name)FROM aspnet_Poll;");
SqlDataReader dr0 =con.getDrPassSql(Scmd);
SqlDataReader dr1 = con1.getDrPassSql(Scmd1);
SqlDataReader dr2 = con22.getDrPassSql(Scmd2);
SqlDataReader dr3 = con3.getDrPassSql(Scmd3);
SqlDataReader dr4 = con3.getDrPassSql(Scmd4);
while (dr0.Read())
Good=dr0.GetValue(0).ToString();
while (dr1.Read())
Excellent = dr1.GetValue(0).ToString();
while (dr2.Read())
Acceptable = dr2.GetValue(0).ToString();
while (dr3.Read())
Dont = dr3.GetValue(0).ToString();
while (dr4.Read())
total = dr4.GetValue(0).ToString();
ASP.net 中的代码我使用计数来选择宽度
<div runat="server" id="radio2">
<!-- Green -->
<asp:Localize runat="server" Text="<%$Resources: , Excellent %>" ></asp:Localize>
<div class="progress">
<div class="progress-bar bg-success " style="width: <%=Excellent%>%;"> <asp:Label ID="ex" runat="server" Text="Label"></asp:Label></div>
</div>
<!-- Turquoise -->
<asp:Localize runat="server" Text="<%$Resources: , Good %>" ></asp:Localize>
<div class="progress">
<div class="progress-bar bg-info" style="width: <%=Good%>%;"> <asp:Label ID="go" runat="server" Text="Label"></asp:Label></div>
</div>
<!-- Orange -->
<asp:Localize runat="server" Text="<%$Resources: , Acceptable %>" ></asp:Localize>
<div class="progress">
<div class="progress-bar bg-warning" style="width: <%=Acceptable%>%;"> <asp:Label ID="ac" runat="server" Text="Label"></asp:Label></div>
</div>
<!-- Red -->
<asp:Localize runat="server" Text="<%$Resources: , Dont %>" ></asp:Localize>
<div class="progress">
<div class="progress-bar bg-danger" style="width: <%=Dont%>%;"> <asp:Label ID="do" runat="server" Text="Label"></asp:Label></div>
</div>
【问题讨论】:
“高效”是什么意思?您目前有什么具体的指标并打算改进? 你学习过 SQL 中的 Group By 吗?如果您想要将所有查询合并为一个,这听起来就像您想要的那样。 是的,但我不知道如何将它与 SqlDataReader 一起使用,我如何检索它们(SELECT COUNT(poll_Name),poll_Name FROM aspnet_Poll group by poll_Name order by poll_Name ASC;) 您将有 4 行要读取,每行 2 列。 【参考方案1】:您正在对 poll_Name 的每个值使用查询,这似乎效率不高。 但建议使用 group by 来获取单个查询中的记录。
select COUNT(poll_Name) as poll_count, poll_Name as poll_name from aspnet_Poll group by poll_Name;
poll_Name 是 Good、Excellent、Acceptable 而我不知道的地方。
你可以在 ASP 中使用它。
@foreach (var res in Result)
<asp:Localize runat="server" Text="<%$Resources: , @res %>" ></asp:Localize>
<div class="progress">
<div class="progress-bar bg-success " style="width: <%=@res%>%;"> <asp:Label ID="ex" runat="server" Text="Label"></asp:Label></div>
</div>
【讨论】:
好的,我如何在 asp 中读取它,每个变量都包含在单独的变量中?以上是关于如何以有效的方式创建投票系统的主要内容,如果未能解决你的问题,请参考以下文章