2016-04-13 41 views
1

Verileri çok sayfalı bir sql sayfamdan aspx sayfamda görüntülemeye çalışıyorum ancak bir şeyleri togheter alamıyorum.Aspx sayfasında sql sorgu göstergesinden birden çok değer var

SQL'den değerler görüntülemek istediğim bir ana sayfam var.

Benim masterpage (Site.Master): dosyanın arkasında

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="MySite.SiteMaster" %> 
<!DOCTYPE html> 
<html lang="en"> 
    <head runat="server"></head> 
    <body> 
     <form runat="server"> 
      <div class="content"> 
       <div> 
        <font class="label label-primary"><%= DateTime.Now.ToShortDateString() %> 
        <asp:Label runat="server" ID="LabelCountMember"></asp:Label> 
        <asp:Label runat="server" ID="LabelCountLogins"></asp:Label> 
        <asp:Label runat="server" ID="LabelCountFailedLogins"></asp:Label> 
       </div> 
       <asp:ContentPlaceHolder ID="MainContent" runat="server"> 
       </asp:ContentPlaceHolder> 
       <hr /> 
       <footer> 
        <p>This is my footer!</p> 
       </footer> 
      </div> 
     </form> 
    </body> 
</html> 

Kodum (Site.Master.cs):

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Web.Configuration; 
using System.Data; 

namespace MySite 
{ 
    public partial class SiteMaster : MasterPage 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
     } 

     public void countmembers(object sender, EventArgs e) 
     { 
      string sql = @"SELECT (SELECT COUNT(MemberID) from MyTable where Mamber = 'Registered') AS AllRegMembers, 
             (SELECT COUNT(MemberID) from MyTable where LoginStatus = 'ok') AS AllLogins, 
             (SELECT COUNT(MemberID) from MyTable where LoginStatus = 'fail') AS AllFailLogins"; 

      string variable; 
      using (var connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnString"].ConnectionString)) 
      using (var command = new SqlCommand(sql, connection)) 
      { 
       connection.Open(); 
       using (var reader = command.ExecuteReader()) 
       { 
        //Check the reader has data: 
        if (reader.Read()) 
        { 
         variable = reader.GetInt32(reader.GetOrdinal("AllRegMembers")).ToString(); 

        } 
        // If you need to use all rows returned use a loop: 
        while (reader.Read()) 
        { 
         // Do something 
         string strAllRegMembers = reader.GetInt32(reader.GetOrdinal("AllRegMembers")).ToString(); 
         string strAllLogins = reader.GetInt32(reader.GetOrdinal("AllLogins")).ToString(); 
         string strAllFailLogins = reader.GetInt32(reader.GetOrdinal("AllFailLogins")).ToString(); 

         Label.LabelCountMember.Text = strAllRegMembers; 
         Label.LabelCountLogins.Text = strAllLogins; 
         Label.LabelCountFailedLogins.Text = strAllFailLogins; 
        } 
       } 
      } 
     } 
    } 
} 

temel Aşağıdaki yapıya sıralamak için bana yardım edin. Birçok farklı yöntem denedim ama hiçbiri işe yaramaz ve bir okuyucudan çoklu değerler ile uğraşırken basit bir örnek bulamıyorum. Yanlışlıkla anahtar kelimelerle arama yapıyorum.

Aşağıdaki kodu kullanarak Klasik ASP'de çalışmaya başlayabilirim ancak C# 'ye geçmeye başlamak istiyorum.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 
<!--#include file="dbcon.asp" --> 
<% 
sql = "SELECT (SELECT COUNT(MemberID) from MyTable where Mamber = 'Registered') AS AllRegMembers, " & _ 
       "SELECT COUNT(MemberID) from MyTable where LoginStatus = 'ok') AS AllLogins, " & _ 
       "(SELECT COUNT(MemberID) from MyTable where LoginStatus = 'fail') AS AllFailLogins";" 

call dbOpen(conn) 

Set rs = conn.Execute(sql) 
strAllRegMembers = rs("AllRegMembers") 
strAllLogins = rs("AllLogins") 
strAllFailLogins = rs("AllFailLogins") 
rs.Close : Set rs = Nothing 

Call dbClose(conn) 
%> 
<!DOCTYPE HTML> 
<html> 
<head></head> 
<body> 
<span>Registered members: <%= strAllRegMembers %></span> 
<span>Number of OK logins: <%= strAllLogins %></span> 
<span>Number of failed logins: <%= strAllFailLogins %></span> 
</body> 
</html> 

Chris ve Jo Biesta sayesinde altında bir çalışma codebehind dosya folows. Perfekt beyler, teşekkürler!

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Web.Configuration; 
using System.Data; 

namespace MySite 
{ 
    public partial class SiteMaster : MasterPage 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      countmembers(); 
     } 

     public void countmembers() 
     { 

      string strAllRegMembers = String.Empty; 
      string strAllLogins = String.Empty; 
      string strAllFailLogins = String.Empty;     
      string sql = @"SELECT (SELECT COUNT(MemberID) from MyTable where Mamber = 'Registered') AS AllRegMembers, 
             (SELECT COUNT(MemberID) from MyTable where LoginStatus = 'ok') AS AllLogins, 
             (SELECT COUNT(MemberID) from MyTable where LoginStatus = 'fail') AS AllFailLogins"; 

      string variable; 
      using (var connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnString"].ConnectionString)) 
      using (var command = new SqlCommand(sql, connection)) 
      { 
       connection.Open(); 
       using (var reader = command.ExecuteReader()) 
       { 
        //Check the reader has data: 
        if (reader.Read()) 
        { 
         variable = reader.GetInt32(reader.GetOrdinal("AllRegMembers")).ToString(); 

        } 
        // If you need to use all rows returned use a loop: 
        while (reader.Read()) 
        { 
         // Do something 
         strAllRegMembers = reader.GetInt32(reader.GetOrdinal("AllRegMembers")).ToString(); 
         strAllLogins = reader.GetInt32(reader.GetOrdinal("AllLogins")).ToString(); 
         strAllFailLogins = reader.GetInt32(reader.GetOrdinal("AllFailLogins")).ToString(); 


        } 
       } 
      } 

       LabelCountMember.Text = strAllRegMembers; 
       LabelCountLogins.Text = strAllLogins; 
       LabelCountFailedLogins.Text = strAllFailLogins; 
     } 
    } 
} 

Bunu yararlı bulabileceğiniz diğer kullanıcılar için. Eğer dönerseniz değerler yerine bu metin biçiminde kullanılmaktadır: göründüğü

ben kaçırmıştım sürece
reader.GetString(reader.GetOrdinal("AllRegMembers")); 

cevap

1

aşağıdaki kodu deneyin:

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Web; 
    using System.Web.UI; 
    using System.Web.UI.WebControls; 
    using System.Data.SqlClient; 
    using System.Web.Configuration; 
    using System.Data; 

    namespace MySite 
    { 
     public partial class SiteMaster : MasterPage 
     { 
      protected void Page_Load(object sender, EventArgs e) 
      { 
       countmembers(); 
      } 

      public void countmembers() 
      { 

       string strAllRegMembers = String.Empty; 
       string strAllLogins = String.Empty; 
       string strAllFailLogins = String.Empty;     
       string sql = @"SELECT (SELECT COUNT(MemberID) from MyTable where Mamber = 'Registered') AS AllRegMembers, 
              (SELECT COUNT(MemberID) from MyTable where LoginStatus = 'ok') AS AllLogins, 
              (SELECT COUNT(MemberID) from MyTable where LoginStatus = 'fail') AS AllFailLogins"; 

       string variable; 
       using (var connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnString"].ConnectionString)) 
       using (var command = new SqlCommand(sql, connection)) 
       { 
        connection.Open(); 
        using (var reader = command.ExecuteReader()) 
        { 
         //Check the reader has data: 
         if (reader.Read()) 
         { 
          variable = reader.GetInt32(reader.GetOrdinal("AllRegMembers")).ToString(); 

         } 
         // If you need to use all rows returned use a loop: 
         while (reader.Read()) 
         { 
          // Do something 
          strAllRegMembers = reader.GetInt32(reader.GetOrdinal("AllRegMembers")).ToString(); 
          strAllLogins = reader.GetInt32(reader.GetOrdinal("AllLogins")).ToString(); 
          strAllFailLogins = reader.GetInt32(reader.GetOrdinal("AllFailLogins")).ToString(); 


         } 
        } 
       } 

        Label.LabelCountMember.Text = strAllRegMembers; 
          Label.LabelCountLogins.Text = strAllLogins; 
          Label.LabelCountFailedLogins.Text = strAllFailLogins; 
      } 
     } 
    } 
1

şey (telefonumda kodunu okumak için biraz zor) Sorununuz hiçbir şey countmembers yöntemini çağırarak olmasıdır sanki .

Bu yöntemi sayfa yükleme yönteminden çağırmayı deneyin ve nasıl devam edeceğinizi görün.

Ayrıca Chris'in önerdiği gibi, kodunuzda bir hata ayıklama noktası koyun ve bu adımdan geçin. O zaman nerede çalışmadığını göreceksiniz.

+0

Şimdi kesme noktaları eklemek için denedim ve farklı bir şekilde hayır ancak sayfa yükten yöntemini çağırmak deneyin. Kaç tane kesme noktası tanımladığımı ("Ne zaman vuruldu" mesajını ve "hit sayımı" nı kullanmayı denedim ama nope). Nasıl koşturabilirim? Page_load countmembers() 'ı eklemeye çalıştım, ayrıca aspx dosyasına countmembers() eklemeyi denedim ama – Slint

+0

@Slint'i kontrol etmek için Chris tarafından sola yazılan cevabı kontrol edin, gönderdiği aynı kodu öneririm. –

+0

Evet, Chris örnek çalıştı. LabelHuntMembers.Text Label.LabelCountMemebers.Text ile ilk hatalarımı düzeltmek için sadece teşekkürler. – Slint