如何以有效的方式创建投票系统

Posted

技术标签:

【中文标题】如何以有效的方式创建投票系统【英文标题】:How can I create a poll system in an efficient way 【发布时间】:2021-09-07 00:08:36 【问题描述】:

我在 ASP 中有我的代码,轮询系统从 SQL 检索数据(每次轮询的计数),但我使用它的方式效率不高。我需要帮助以有效的方式重写相同的代码。 我使用了很多 connectsqlDataReaderquery !!!我想把它们都最小化

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 中读取它,每个变量都包含在单独的变量中?

以上是关于如何以有效的方式创建投票系统的主要内容,如果未能解决你的问题,请参考以下文章

防刷票系统的方案

RoR 投票系统。如何计算票数、反对票和总票数?

基于php004网络投票在线投票系统

前后端分离投票小系统

设计页面 投票系统

如何将数组存储到mysql中?